Google脚本问题包括删除,重命名,复制工作流程

时间:2013-04-29 18:42:04

标签: google-apps-script

在此电子表格中有3张。一个名为Juniper,一个名为Archive Juniper,一个名为Template Juniper。

每天,员工填写Juniper表格。在基于时间的触发器上,我需要删除旧的“Archive Juniper”,将“Juniper”重命名为“Archive Juniper”,并将“Template Juniper”复制到“Juniper”。实际上它只是存档昨天,并根据模板创建一个新的空白。

我的代码如下。它非常适合白色,但几天前它停止工作。我不是程序员,所以任何帮助都会很棒。我在ss.setActiveSheet(ss.getSheetByName(mainSheet));

上收到了无效的参数错误
var ss = SpreadsheetApp.getActiveSpreadsheet();
var templateSheet = 0;
var template = 0;
var mainSheet = 0;
var archive = 0;
var templateSheet = 0;
var sheet = 0;

mainSheet = ('Juniper');
template = ('Template '+mainSheet);
archive = ('Archive '+mainSheet);
ss.setActiveSheet(ss.getSheetByName(archive));
ss.deleteActiveSheet()
ss.setActiveSheet(ss.getSheetByName(mainSheet));
ss.renameActiveSheet(archive)
templateSheet = ss.getSheetByName(template);
ss.insertSheet(mainSheet,ss.getSheets().length,{template:templateSheet });
ss.moveActiveSheet(1);

对于丑陋的代码感到抱歉,我充其量是可怕的。

-Jon

1 个答案:

答案 0 :(得分:0)

只有当脚本找不到名为“Juniper”的工作表并将null返回到使其处于活动状态的方法时,才会出现该错误。我已经清理了一些代码以删除额外的东西,你能告诉我们这是否有用吗?

编辑:我试了一下,也遇到了问题。下面的代码对我有用。

var ss = SpreadsheetApp.getActiveSpreadsheet();

var mainName = "Juniper";
var mainSheet = ss.getSheetByName(mainName);

var templateName = "Template " + mainName;
var templateSheet = ss.getSheetByName(templateName);

var archiveName = "Archive " + mainName;
var archiveSheet = ss.getSheetByName(archiveName);

ss.setActiveSheet(archiveSheet);
SpreadsheetApp.flush();//Makes sure the sheet is active before deleting
ss.deleteActiveSheet();

mainSheet.setName(archiveName);

//Inserts it as first sheet, so no need to move it
ss.insertSheet(mainName,0,{ template : templateSheet });