google-apps-script - 与 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;
}
...
...
解决方案
创建菜单项后onOpen()
,用户必须完成 OAuth 流程才能使用脚本中的功能。当用户单击脚本需要特殊权限的自定义菜单项时,将出现 OAuth 对话框。
用户成功完成 OAuth 流程后,即可正常使用自定义菜单项功能。如文档中所述,这是预期的行为:自定义菜单 G Suite -> “9。现在脚本已获得授权,请再次单击您添加到页面的链接。该功能现在将执行...”
推荐阅读
- azure-devops - Azure DevOps 阶段到阶段依赖项在条件不工作的情况下使用输出变量
- python - NetCDF get_dims 太多值无法解包
- jmeter - Is there a way to run only one test from the testplan using Taurus/JMeter?
- c# - 有条件地遍历 XML 文件,仅当元素等于值时才读取数据
- php - 在 PHPUnit 测试中模拟 env()
- javascript - HTML\CSS\JavaScript:如何动态构建菜单?
- python - 在 txt 文件中查找每个句子中的最后一个单词
- javascript - 每个文件的输出路径/文件名
- java - JAVA JPA:使用注释在属性上连接两个实体
- linux - 为什么yum包可以列出但不能删除?