正确的Google App脚本执行API范围?

时间:2017-07-16 19:47:40

标签: google-apps-script google-api google-docs google-api-ruby-client

我希望通过Execution API运行Google App脚本来自动化一些人力资源工作。在不了解细节的情况下,我想将员工评估数据作为参数传递到App脚本中。然后,该脚本将使用此数据编译"员工评论" GDoc。

到目前为止,我使用Execution API运行了一个简单的测试App脚本。例如,我可以成功运行一个记录字符串或与电子表格交互的简单函数。到现在为止还挺好。

但是在尝试写入GDoc时遇到了问题(不幸的是,这对我的任务不可或缺)。这是我的配对脚本:

// TODO: Eventually, we'll pass these variables as arguments
var docId = "MY-DOC-ID";

// Find the team member review doc
var doc = DocumentApp.openById(docId);

// Replace placeholder text
var docBody = doc.getActiveSection();
docBody.replaceText('{{DATE}}', "Date set by App Script!!!");
doc.saveAndClose();

当我按下" Run" App Scripts Web UI中的按钮。但是当我尝试通过Execution API运行时,我得到:

{
  "error": "unauthorized_client",
  "error_description": "Unauthorized client or scope in request."
}

显然我还没有提供正确的范围?按照文档,我可以在项目属性>中找到必要的范围。范围说:

enter image description here

但是当我尝试添加该范围时,它无法正常工作。正如我所说的其他范围(例如https://www.googleapis.com/auth/spreadsheets)工作正常。也许不再支持auth/documents范围,或者他们的API中存在错误?

问题

  1. 正确的范围是什么?我可以看到a big list here,但我看不到https://www.googleapis.com/auth/documents,所以?
  2. 还有其他建议吗?例如,是否可以直接使用Google客户端API写入Google文档(即不使用应用程序脚本)?

1 个答案:

答案 0 :(得分:0)

卫生署。我找到了解决问题的方法。虽然这是一个愚蠢的错误,但它仍然值得发布,因为它可能会在未来挽救其他人的混乱。

首先,关于我的设置的一些背景。我使用Service Account对Google Client API进行身份验证。此外,正如使用服务帐户设置时常见的那样,我冒充我们组织内的用户(特别是我自己的帐户)。

我失去的一步(后见之明)...

  1. 以您模拟的人身份登录App Script Web UI。
  2. 按播放按钮
  3. 手动运行脚本
  4. 如果模拟用户尚未授予访问所需范围的权限,系统将提示您这样做。
  5. 授予访问权限后(特别是https://www.googleapis.com/auth/documents范围),我的授权错误消失了。
  6. 所以上课:确保您模拟的帐户已授予您脚本所需的所有范围的访问权限。