复制电子表格并为新帐户添加触发器

时间:2015-07-08 14:49:01

标签: google-apps-script triggers google-sheets

我有大量简单的电子表格(每个电子表格与不同的代理商共享),以及一个用于与所有这些电子表格进行交互的大型“管理”电子表格。

添加新代理时,我使用脚本(绑定到管理电子表格)来复制和重命名模板电子表格。模板电子表格有一个onEdit触发器,复制到新实例。当我尝试在复制后添加它(请参阅下面的脚本)时,它会被添加到管理电子表格而不是新的电子表格中。

function NewAgent(filename) {
  // create new spreadsheet from template
  var folder = DriveApp.getFoldersByName(AgentFolder).next();
  var tmplt = DriveApp.getFilesByName(AgentTemplate);
  var newfile = tmplt.next().makeCopy(filename, folder );
  var newspread = SpreadsheetApp.openById( newfile.getId() );

  ScriptApp.newTrigger("MyFunction").forSpreadsheet(newspread).onEdit().create();

  SpreadsheetApp.flush();
}

函数MyFunction绑定到模板(并且也出现在绑定到新电子表格的脚本中)。 如上所述,函数NewAgent与管理脚本绑定。 结果是触发器被添加到管理电子表格......

想法?

由于

2 个答案:

答案 0 :(得分:0)

试试这个。问题可能是你指的是" newfile"变量

    function NewAgent(filename) {
      // create new spreadsheet from template
      var folder = DriveApp.getFoldersByName(AgentFolder).next();
      var tmplt = DriveApp.getFilesByName(AgentTemplate);
      var newfile = tmplt.next().makeCopy(filename, folder );
      var newspread = SpreadsheetApp.openById( DriveApp.getFilesByName(        filename ) );
    }

ScriptApp.newTrigger(" MyFunction的&#34)。forSpreadsheet(newspread).onEdit()创建();

SpreadsheetApp.flush(); }

答案 1 :(得分:0)

问题是forSpreadsheet()接受电子表格ID作为参数,并且您发送文件,从代码中删除SpreadsheetApp.openById(,它应该没问题:

var newspread = newfile.getId();