4

我的 Google 电子表格中有一个脚本,可以打开一个 Google 文档并在表格的某个单元格中返回文本,如下所示:

function getItemStatus(docUrl) {
   var doc = DocumentApp.openByUrl(docUrl);
   var docBody = doc.getBody();
   var docTbls = docBody.getTables();
   var itmTbl = docTbls[0];
   var itmStatus = itmTbl.getCell(3,1).getText();
   return itmStatus;  
}

当我尝试在电子表格中运行该函数时,它返回此错误:

错误:您无权调用 openByUrl(第 39 行,文件“代码”)

如果我创建另一个函数来直接调用上述函数,它就可以正常工作并返回我所追求的值。

function testItemGet() {
   var docUrl = ("...");
   itmStr = getItemStatus(docUrl);
   Logger.log("The item's value is " + itmStr)
}

生成的日志文件:

[13-07-17 19:27:39:130 EDT] 开始执行

[13-07-17 19:27:39:387 EDT] DocumentApp.openByUrl([...]) [0.253 秒]

[13-07-17 19:27:39:388 EDT] Document.getBody() [0 秒]

[13-07-17 19:27:39:388 EDT] Body.getTables() [0 秒]

[13-07-17 19:27:39:388 EDT] Table.getCell([3, 1]) [0 秒]

[13-07-17 19:27:39:389 EDT] TableCell.getText() [0 秒]

[13-07-17 19:27:39:389 EDT] Logger.clear() [0 秒]

[13-07-17 19:27:39:389 EDT] Logger.log([The item's value is Deferred , []]) [0 seconds]

[13-07-17 19:27:39:390 EDT] 执行成功 [0.256 秒总运行时间]

从我用谷歌搜索的内容来看,只要我对文档拥有编辑或所有者权限,我就应该能够做到这一点。

我对 Google Apps 脚本很陌生,所以请保持温和。:)

提前感谢您的帮助和耐心!

4

1 回答 1

2

自定义函数以有限的权限运行,并且无法利用依赖用户凭据的服务,包括 DocumentApp。

https://developers.google.com/apps-script/execution_custom_functions#permissions

于 2013-07-18T15:25:32.703 回答