我正在尝试使用谷歌应用程序脚本复制/复制工作表。有可能这样做吗?我无法在 API 文档中找到此类调用的任何参考。https://developers.google.com/google-apps/spreadsheets/
问问题
1680 次
2 回答
1
抱歉,据我所知,没有功能可以做到这一点。谷歌应用脚本会做到这一点。
我是手动的。我创建了一个新工作表并复制了公式/数据。但是如果你在你的公式中使用 $ 会出现错误,读取工作正常,但写入很痛苦,因为某些公式,例如 A$1 引用不会写入工作表(因为错误)。所以你需要将它们切换到A1。你也不能复制字体/颜色等。
我的代码是用 Java 编写的,但不容易拆分出你需要的部分。
于 2013-05-24T00:33:28.423 回答
1
您可以使用部署为网络应用程序的谷歌应用程序脚本。使用 HTTP GET 调用 Web 应用程序以传输电子表格 ID、要复制的工作表的名称和新工作表的名称。这是我使用的脚本:
function doGet(e) {
// get parameter from request (GET HTTP method)
var spreadsheetID = e.parameter.spreadsheetID;
var targetName = e.parameter.targetName;
var sourceSheetName = e.parameter.sheetName;
var response = copyWorksheet(spreadsheetID, sourceSheetName, targetName);
return ContentService.createTextOutput(response);
}
function copyWorksheet(spreadsheetID, templateName, sheetName){
// if there is a spreadsheet ID, find the spreadsheet with this ID
if(typeof spreadsheetID == "string"){
spreadsheet = SpreadsheetApp.openById(spreadsheetID);
}else{
return "failure; the spreadsheet " + spreadsheetID + " was not found";
}
// if there is a template name, find the worksheet with this name and set it as the active sheet; (if there is no name provided, the active worksheet is duplicated)
if(typeof templateName == "string"){
template = spreadsheet.getSheetByName(templateName);
if(template != null)
spreadsheet.setActiveSheet(template);
}
// duplicate active sheet and set the new sheet as the active sheet
newSheet = spreadsheet.duplicateActiveSheet();
// rename the sheet
if(typeof sheetName == "string"){
sheetName.setName(sheetName);
}
return "success;" + sheetName + ";";
}
将此脚本附加到任何电子表格并进行部署。调用它使用:
<scriptURL>?spreadsheetID=<spreadsheetID>&targetName=<targetName>&templateName=<sourceSheetName>
于 2013-06-25T14:33:22.960 回答