【发布时间】:2016-05-03 18:38:56
【问题描述】:
我浏览了本指南:https://developers.google.com/apps-script/guides/rest/quickstart/target-script,为 Google Apps 脚本创建了一个快速启动目标。在本节结束时,我按照 Node.js 教程从本地 node.js 服务器执行此脚本:https://developers.google.com/apps-script/guides/rest/quickstart/nodejs
一切顺利!
但是,然后我替换了 Google Apps 脚本中的默认代码 :
function getFoldersUnderRoot() {
var root = DriveApp.getRootFolder();
var folders = root.getFolders();
var folderSet = {};
while (folders.hasNext()) {
var folder = folders.next();
folderSet[folder.getId()] = folder.getName();
}
return folderSet;
}
到这里:
function getPressInfo() {
var spreadsheet = SpreadsheetApp.openById("MY_SHEET_ID");
var sheets = spreadsheet.getSheets();
var activeSheet = null;
for (var i = 0; i < sheets.length; i++) {
var sheet = sheets[i];
var name = sheet.getName();
if (/published/i.test(name)) {
activeSheet = sheet;
break;
}
}
if (!sheet) {
return null;
}
var lastRow = sheet.getLastRow();
var lastCol = sheet.getLastColumn();
return sheet.getSheetValues(1, 1, lastRow, lastCol);
}
我更新了我的 target 版本,并在我的 node.js 脚本中将我的 function 资源重命名为 getPressInfo。现在我收到一个授权错误...我不知道这是参考 Google 表格(设置为公开可见)、Google Apps 脚本(设置对任何人的访问权限)还是完全不同的东西。错误读取:
The API returned an error: { [Error: ScriptError]
code: 401,
errors:
[ { message: 'ScriptError',
domain: 'global',
reason: 'unauthorized' } ] }
还有其他人遇到过这个问题吗?我不认为这是 Google Apps 脚本,因为当我使用默认示例回滚到目标时,它仍然有效。如果有帮助,我可以使用虚拟数据重新创建..,但我怀疑我的代码中有一些简单的东西实际上会触发错误。
【问题讨论】:
-
看起来这个问题说
openById和openByUrl被撤销服务器端交互..? stackoverflow.com/questions/32077888/… -
已确认此 Google 问题:code.google.com/p/google-apps-script-issues/issues/…
-
如果您仍想使用 Google Apps 脚本,看起来解决方法是将您的函数绑定到
triggers:developers.google.com/apps-script/guides/triggers
标签: javascript node.js google-apps-script