安装onEdit触发器不

时间:2017-09-19 20:16:53

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

我有一个功能,用于检测一个电子表格中的更改,如果在sheet1中进行更改,则将它们复制到同一个确切单元格位置的另一个电子表格中。我首先尝试使用sheetAPI提供的已安装的onEdit(e)函数来执行此操作,但仍然遇到错误,我无权从内置函数打开新的电子表格。我尝试设置自己的触发器,但即使我为该功能分配了一个OnEdit触发器,它也不会激活。

function ChangeDetect(e){
  var range = e.range 
  var esheet = SpreadsheetApp.getActiveSheet()
  var ss = SpreadsheetApp.getActiveSpreadsheet()
   var sheet = ss.getSheets()[1];
  // literally, if the edit was made in the first sheet of the spreadsheet, do the following:
  if (esheet.getIndex() == ss.getSheets()[0].getIndex()){
    var numrows = range.getNumRows();
    var numcols = range.getNumColumns();
    for (var i = 1; i <= numrows; i++) {
      for (var j = 1; j <= numcols; j++) {
        var currentValue = range.getCell(i,j).getValue();
        var cellRow = range.getCell(i,j).getRow();
        var cellCol = range.getCell(i,j).getColumn();



        var ss3 = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1K2ifzjPTATH77tV4xInh0Ga2SuPsLdgNRSbekjDx-w8/edit#gid=0')
        var sheet3 = ss3.getSheets()[0];
        sheet3.getRange(cellRow,cellCol).setValue(currentValue)
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

我想您可能会遇到limitation/restrictions of installable triggers

<强>限制

因为简单的触发器会自动触发,而不会要求用户授权,所以它们会受到一些限制:

  • 该脚本必须绑定到Google表格,文档或表单文件。
  • 如果以只读(查看或评论)模式打开文件,它们不会运行。
  • 他们无法访问需要授权的服务。例如,简单的触发器无法发送电子邮件,因为Gmail服务需要授权,但简单的触发器可以使用以下内容翻译短语: 语言服务,这是匿名的。
  • 他们可以修改绑定的文件,但无法访问其他文件,因为这需要授权。
  • 他们可能会也可能无法确定当前用户的身份,具体取决于一组复杂的安全限制。
  • 他们跑的时间不能超过30秒。
  • 在某些情况下,Google表格,文档和表单的附加组件运行 - 他们的onOpen(e)和onEdit(e)简单触发器处于非授权模式,这会带来一些额外的复杂性。有关更多信息,请参阅加载项授权生命周期指南。 这些限制不适用于doGet()或doPost()。