首页 > 解决方案 > 授权我的应用脚本库供个人使用

问题描述

我开发了一个适用于表单的脚本应用程序。它执行以下任务:

  1. 发送电子邮件
  2. 读取/写入数据到电子表格
  3. 将文档属性读/写到 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"
}

标签: google-apps-scriptgoogle-cloud-platformgoogle-oauth

解决方案


推荐阅读