代码之家  ›  专栏  ›  技术社区  ›  fiel

从onEdit触发器运行谷歌应用程序脚本时没有权限

  •  0
  • fiel  · 技术社区  · 2 年前

    我有一个简单的谷歌应用程序脚本,可以从我正在处理的当前电子表格中执行一些操作,然后将数据传输到另一个电子表格,如下所示。

    function unplannedSubmit()
    {
      //Some pre-requisite codes here//
      //Input is transferData, output is sending those data to a certain range in ds_main
    
      var ds = SpreadsheetApp.openByUrl("URL will be inserted here");
      var ds_main = ds.getSheetByName("Job Management - All");
    
      ds_main.getRange(1, 1, 5, 10).setValues(transferData);
    }

    无论出于何种原因,当我尝试手动运行unplannedSubmit()时,它运行得非常好。我做了另一个代码部分来确定是否运行这些函数,并将它们放入onEdit()函数中,该函数应该在对活动电子表格进行编辑时运行

    function onEdit()
    {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var ss_submitList = ss.getSheetByName("Jobsheet Change List / Request");
      var ss_unplanList = ss.getSheetByName("Unplanned Job List / Application");
    
      //Check for unplanned import function
      if (ss_unplanList.getRange("A1").getValue() > 0) unplannedSubmit();
    }

    但这样做只会给我带来这个错误: Error message on trigger

    {
      "oauthScopes": [
        "https://www.googleapis.com/auth/spreadsheets"
      ],
      "timeZone": "Asia/Kuala_Lumpur",
      "dependencies": {},
      "exceptionLogging": "STACKDRIVER",
      "runtimeVersion": "V8",
      "webapp": {
        "executeAs": "USER_DEPLOYING",
        "access": "ANYONE_ANONYMOUS"
      }
    }

    1 回复  |  直到 2 年前
        1
  •  1
  •   doubleunary    2 年前

    这个 onEdit() 函数是一个 simple trigger 它在只能访问当前电子表格文件的有限上下文中运行。在这种情况下,其他电子表格文件不可用。

    onEdit() 比如说 onEditInstallable() 通过一个 installable "on edit" trigger

    请注意,该函数将运行 编辑时间 任何 电子表格中的值。您应该包括额外的检查,以便在需要时仅在电子表格文件之间复制数据 已更改。