首页 > 解决方案 > 与 Rhino 运行时相比,在 V8 下授权后 Appscript 不执行

问题描述

我有一个基本的 AppScript,它创建一个菜单项,一旦用户单击菜单项就执行一个函数。该函数提示用户输入一个 url。此代码嵌入在只读 Google Doc 中,因此用户首先需要制作 Google Doc 的副本。

在我选择 V8 运行时之前,这一直按预期工作。现在,当用户单击菜单项“创建古兰经报告卡”时,会向用户显示标准授权对话框,单击允许后,脚本不会显示“输入电子表格的完整链接”对话框。 "

当我将运行时恢复为旧版 appscript(又名 Rhino)时,会按预期显示对话框。我无法在迁移文档 ( https://developers.google.com/apps-script/guides/v8-runtime/migration ) 中识别出我需要实施以处理此问题的任何内容。

下面的代码片段。帮助将不胜感激!

function onOpen() {
  DocumentApp.getUi()
    .createMenu('Report Cards')
    .addItem('Create Report Cards', 'termReport')
    .addToUi();
}

// Create Term Report
function termReport() {

  // Prompt user to provide google sheet URL
  ui = DocumentApp.getUi();
  prompt = ui.prompt("Enter full link of your spreadsheet:", ui.ButtonSet.OK_CANCEL);

  // Check if valid url was entered
  try {
    wsID = SpreadsheetApp.openByUrl(prompt.getResponseText()).getId();
  } catch(err) {
    ui.alert("You entered an invalid link for the spreadsheet. Please re-run script with correct link.");
    return;
  }
  ...
  ...

标签: google-apps-script

解决方案


创建菜单项后onOpen(),用户必须完成 OAuth 流程才能使用脚本中的功能。当用户单击脚本需要特殊权限的自定义菜单项时,将出现 OAuth 对话框。

用户成功完成 OAuth 流程后,即可正常使用自定义菜单项功能。如文档中所述,这是预期的行为:自定义菜单 G Suite -> “9。现在脚本已获得授权,请再次单击您添加到页面的链接。该功能现在将执行...”


推荐阅读