代码之家  ›  专栏  ›  技术社区  ›  John Smith

为什么我的脚本不在打开相应的电子表格时运行(我使用onOpen(e))?

  •  0
  • John Smith  · 技术社区  · 1 年前

    我已经编写了以下应用程序脚本:

    function onOpen() {
          set_percentage(99);
    }
    
    
    function set_percentage(value) {
      var app=SpreadsheetApp;
      var ssid="1C0sMrS8QuqWVCsgEkCbi2zzD-a5QrSuvlnvpVlgspHM";
      var ss=app.openById(ssid);
      var s=ss.getSheets()[0];
      cell=s.getRange("B2").setValue(value)
      
    }
    

    我有一个带有id的谷歌电子表格 1C0sMrS8QuqWVCsgEkCbi2zzD-a5QrSuvlnvpVlgspHM 。 当我打开它的值 99 不在 B2 cell-脚本不运行。 我修改了那个代码 given as an example 因为我不想创建任何可自定义的菜单,也不想更改GUI中的任何内容。

    当我从GUI手动运行脚本时,它就会运行( Extensions>>Apps Script )。 请不要将此问题视为 duplicate

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

    这个 onOpen(e) 函数是 simple trigger 它在一个上下文中运行,不能访问任何个人信息,也不能调用需要身份验证的服务。这个 openById() 方法需要身份验证,因此从调用时会抛出错误 打开(e)

    当您通过 按钮,它在您的帐户下运行,并且 openById() 工作良好。

    要使代码正常工作,请重命名 打开(e) 类似于 installableOnOpen(e) 并通过 installable trigger 。可安装的触发器在设置触发器的用户的帐户下运行。

    你可以查看 My Executions 对于失败的执行,并查看这些日志以查找代码失败的原因。