我正在尝试使用Google Apps脚本复制/复制工作表。这可能吗?我无法在API文档中找到任何此类调用的引用。 https://developers.google.com/google-apps/spreadsheets/
答案 0 :(得分:1)
很抱歉,据我所知,没有这方面的功能。 Google应用脚本可以执行此操作。
我用手动方式做到了。我创建了一个新工作表并完成了公式/数据的副本。但是如果你在你的公式中使用$有错误,那么读取工作正常,但写入是一种痛苦,就像一些公式,例如A $ 1引用不会写入工作表(因为一个错误)。所以你需要将它们切换到A1。你也不能复制字体/颜色等。
我这样做的代码是用Java编写的,但要分割出你需要的东西并不容易。
答案 1 :(得分:1)
您可以使用部署为网络应用的Google Apps脚本。 使用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>