【问题标题】:Google Sheets OnEdit() - You do not have permission to call a serviceGoogle 表格 OnEdit() - 您无权调用服务
【发布时间】:2018-05-20 09:29:00
【问题描述】:

从本月初开始,这段代码就不再工作了

function onEdit(e){    
              var html = HtmlService.createTemplateFromFile( 'MyHtmlFile' )
              .evaluate()
              .setWidth( 800 )
              .setHeight( 400 );
              SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
              .showModalDialog( html, 'My page title' ); 
}

当我编辑电子表格的单元格时不显示弹出窗口,但我在控制台中收到此错误

Google Apps 脚本:您无权调用 showModalDialog

【问题讨论】:

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


【解决方案1】:

此答案用于文档目的。

  • 如果您想避免手动安装触发器,也可以通过脚本创建可安装的onEdit 触发器。

要为myFunction 创建可安装 onEdit 触发器,请执行only一次 下面的create_onEdit 函数:

function myFunction(){    
     var html = HtmlService.createTemplateFromFile( 'MyHtmlFile' )
              .evaluate()
              .setWidth( 800 )
              .setHeight( 400 );
              SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
              .showModalDialog( html, 'My page title' ); 
}

function create_onEdit(){
    ScriptApp.newTrigger('myFunction')
    .forSpreadsheet(SpreadsheetApp.getActive())
    .onEdit()
    .create(); 
}

参考资料:

【讨论】:

    【解决方案2】:

    onEdit() 必须是Installable Trigger,因为它正在使用需要授权的服务。

    注意:onEdit()用作可安装触发器时重命名,以避免possible issues

    与简单触发器一样,可安装触发器让 Apps 脚本在发生特定事件(例如打开文档)时自动运行函数。 然而,可安装的触发器比简单的触发器提供更多的灵活性:它们可以调用需要授权的服务,...

    Managing triggers manually:

    要通过脚本编辑器中的对话框手动创建可安装触发器,请执行以下步骤:

    1. 从脚本编辑器中,选择编辑 > 当前项目的触发器。
    2. 单击显示:未设置触发器的链接。点击此处立即添加。
    3. 在运行下,选择要触发的函数名称。
    4. 在事件下,选择时间驱动或脚本绑定到的 Google 应用(例如,从电子表格)。
    5. 选择并配置您要创建的触发器类型(例如,每小时运行的小时计时器或打开的触发器)。
    6. (可选)单击通知以配置在触发功能失败时通过电子邮件与您联系的方式和时间。
    7. 点击保存。

    【讨论】:

    • 请注意,Google 最近更改了可安装触发器的行为:stackoverflow.com/questions/47479954/…
    • 只要@MisaelSab 是安装触发器的人,它就是上述问题代码的有效解决方案,因此Managing triggers manually。如果他们可以访问代码,他们应该能够设置可安装的触发器,从而纠正错误。另一方面,很高兴知道该更改,并且可能是我在一个项目中看到的错误的原因,谢谢您
    • 如果是简单的触发器,确实会发生错误。上面的代码在新工作表上进行了测试,并重现了错误。一旦它被移动到一个可安装的触发器,它就可以正常工作
    • 我猜你是对的,谷歌做出的重大改变是showModalDialog现在需要用户授权,所以它不再可以在简单的触发器中使用
    • 使用 onEdit 是可安装触发器的保留函数名称可能会导致意外结果。见stackoverflow.com/q/46248743/1595451
    猜你喜欢
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多