我正在创建一个用于 Google 电子表格的 Google Apps 脚本插件,但它需要能够访问我正在使用的单独 Google 文档的内容DocumentApp.openById() https://developers.google.com/apps-script/reference/document/document-app#openById(String)。我已经给了脚本这些scopes https://developers.google.com/apps-script/concepts/scopes:
"oauthScopes": [
"https://www.googleapis.com/auth/documents.readonly",
"https://www.googleapis.com/auth/script.container.ui",
"https://www.googleapis.com/auth/spreadsheets.currentonly"
]
但显然,这还不够。脚本告诉我它需要https://www.googleapis.com/auth/documents
允许正常工作。然而,当它只需要能够查看一个文件的内容时,授予该附加组件编辑所有 Google 文档文件的权限似乎有些过分。我错过了什么吗?有没有办法赋予它对单独的 Google 文档文件的只读访问权限?
这是我用于测试的函数,大部分文档 ID 已被删除:
function getDoc() {
var id = '1NLH----------------------------------------'
var templateFile = DocumentApp.openById(id)
var templateText = templateFile.getBody().getText()
Logger.log(templateText)
}
Thanks!
我相信你的目标如下。
-
您想要使用以下脚本从 Google 文档检索文本数据。
function getDoc() {
var id = '1NLH----------------------------------------'
var templateFile = DocumentApp.openById(id)
var templateText = templateFile.getBody().getText()
Logger.log(templateText)
}
-
您希望使用以下范围来实现这一目标https://www.googleapis.com/auth/documents.readonly
和 Google Apps 脚本。
问题和解决方法:
在现阶段,DocumentApp.openById
使用文档服务,要求使用范围https://www.googleapis.com/auth/documents
。看来这是当前的规范。因此,在这个答案中,作为一种解决方法,我想建议使用 Google Docs API 而不是文档服务。当使用Google Docs API时,您的脚本可以使用范围来实现https://www.googleapis.com/auth/documents.readonly
.
当使用 Google Docs API 修改上面的脚本时,它会变成如下所示。
示例脚本:
在使用此脚本之前,请在高级 Google 服务中启用 Google Docs API https://developers.google.com/apps-script/guides/services/advanced#enable_advanced_services。该脚本只能在以下范围内工作https://www.googleapis.com/auth/documents.readonly
.
function myFunction() {
const documentId = "###"; // Please set the Document ID.
const obj = Docs.Documents.get(documentId);
const text = obj.body.content.reduce((s, c) => {
if (c.paragraph && c.paragraph.elements) {
s += c.paragraph.elements.map(e => e.textRun.content).join("");
}
return s;
}, "");
console.log(text)
}
参考:
- 方法:documents.get https://developers.google.com/docs/api/reference/rest/v1/documents/get
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)