我希望通过Execution API运行Google App脚本来自动化一些人力资源工作 . 在不了解细节的情况下,我想将员工评估数据作为参数传递到App脚本中 . 然后,该脚本将使用此数据编译"Employee Review" 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();
当我在App Scripts Web UI中按"Run"按钮时,此脚本有效 . 但是当我尝试通过Execution API运行时,我得到:
{
"error": "unauthorized_client",
"error_description": "Unauthorized client or scope in request."
}
显然我没有提供正确的范围?按照文档,我可以在项目属性>范围中找到必要的范围,其中说:
但是当我尝试添加该范围时,它无法工作 . 正如我所说的其他范围(例如https://www.googleapis.com/auth/spreadsheets)工作正常 . 也许不再支持 auth/documents
范围,或者API中存在错误?
问题
-
什么是正确的范围?我能看到a big list here但是我看不到https://www.googleapis.com/auth/documents,所以呢?
-
还有其他建议吗?例如,是否可以直接使用Google Client API写入Google文档(即不使用应用程序脚本)?
1 回答
卫生署 . 我找到了解决问题的方法 . 虽然这是一个愚蠢的错误,但它仍然值得发布,因为它可能会在未来挽救其他人的混乱 .
首先,关于我的设置的一些背景 . 我正在使用Service Account对Google Client API进行身份验证 . 此外,正如使用服务帐户设置时常见的那样,我冒充我们组织内的用户(特别是我自己的帐户) .
我失踪的一步(后见之明)......
以您模拟的人身份登录App Script Web UI .
按播放按钮手动运行脚本
如果模拟用户尚未授予访问所需范围的权限,系统将提示您执行此操作 .
授予访问权限后(特别是对于https://www.googleapis.com/auth/documents范围),我的授权错误消失了 .
所以上课:确保您模拟的帐户已授予您脚本所需的所有范围的访问权限 .