google-apps-script - 授权我的应用脚本库供个人使用
问题描述
我开发了一个适用于表单的脚本应用程序。它执行以下任务:
- 发送电子邮件
- 读取/写入数据到电子表格
- 将文档属性读/写到 PropertiesService
但是,我遇到了一条警告,上面写着“执行该操作需要授权”。
我假设“那个动作”是指访问 PropertiesService,因为它是该库的函数所做的。
我一直在尝试理解像这样的谷歌文章:https ://cloud.google.com/apis/docs/getting-started#enable_an_api
和这个:
https://developers.google.com/apps-script/guides/cloud-platform-projects。
但坦率地说,我不明白我可以做些什么来授权我的库脚本在我的表单中使用,或者可能用于其他想要在自己的表单中使用它的 Google 用户。
如果可能的话,我打算将其设为私有。
另外,我在 Google Cloud Console 中进行了搜索,试图创建一个项目。那是我来得最远的,因为我不知道如何将我的脚本与那个项目联系起来。
我错过了什么?
编辑:感谢@Cooper 对我的帖子的更正。我真的很感激它,它非常有用,因为我一点一点地提高了我的写作技巧。我注意到我可能会混淆术语“编辑器插件”、“库”和“独立脚本”。没错,我明白这一点:前两个最终是独立脚本。我看到的不同之处在于,第一个需要特殊注册,而脚本必须具有一些特殊功能才能进行签名。第二个,诚实,我看不出有什么不同。我在我的有界脚本中包含了一个作为库部署的独立脚本,我可以从 html 表单(由同一库生成)调用库函数,而无需使用命名空间名称。
编辑2:
这是当我访问 URL 以授权包含库的脚本时显示的消息(我猜想库是需要授权的,因为它是执行操作的那个)。
脚本部分如下:
在表单的有界脚本中:
function onOpen() {
CDOLib.setProps(PropertiesService.getDocumentProperties().getProperties());
CDOLib.initCDOLib();
}
在 CDOLib 中:
function initCDOLib() {
var authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL)
if (authInfo.getAuthorizationStatus() ==
ScriptApp.AuthorizationStatus.REQUIRED) {
showReauthorizationRequest();
}
drawMenu_();
}
function showReauthorizationRequest() {
var settings = PropertiesService.getDocumentProperties();
var authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL);
Logger.log("URL AUTH: " + authInfo.getAuthorizationUrl());
}
function drawMenu_() {
var menu = FormApp.getUi().createMenu("CDO engine");
var endDate = props.getProperty("CDO_END_DATE");
if (endDate) {
menu.addItem("Print CDO", "CDOLib.print")
.addSeparator()
.addItem("End CDO", "CDOLib.endCDO");
}
else {
menu.addItem('Start CDO', 'CDOLib.initializeCDO');
}
menu.addToUi();
}
编辑3:
appscript.json 文件的内容:
{
"timeZone": "America/Argentina/Buenos_Aires",
"dependencies": {
"enabledAdvancedServices": []
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
解决方案
推荐阅读
- python - 如何从列表中的每个项目中获取第一个字符并对其进行操作
- mysql - 无法创建表,因为它们都相互关联。外键约束格式不正确
- ruby-on-rails - Rails:如何将模型与多个父级关联
- c# - 从 C# 中的 DBF (Visual FoxPro) 文件中读取特定列
- python - 用于图像 + 元数据的 Azure 存储选项是什么?
- node.js - 如何将使用Sharp库的无服务器框架应用程序部署到AWS?
- php - PHP7.3:更新一个类中的数据,来自其他 2 个类
- ios - 在 Swift 中通过视图层次结构进行通信
- ruby-on-rails - 为什么我的展示组件中的轨道数组是空的?
- java - Pyspark 命令给出错误作为目录未找到错误