【发布时间】:2017-02-11 18:56:06
【问题描述】:
使用绑定到电子表格的 Apps 脚本来影响表格非常简单,通过 SpreadsheetApp 全局。但是,有些功能(例如在工作表上获取/设置过滤器)只能从 Google 表格 REST API 访问。
我见过一个示例,它使用 Apps 脚本中的 UrlFetchApp 来调用 Google Sheet API,但它的编写方式好像 Apps 脚本实际上并未绑定到特定的电子表格。
function getSheetBasicFilter(ssId, sheetId) {
var params = {
headers: {
"Authorization": "Bearer " + ScriptApp.getOAuthToken()
}
};
var base = "https://sheets.googleapis.com/v4/spreadsheets/";
var partialRespParams = "?fields=sheets%2FbasicFilter";
var resp = UrlFetchApp.fetch(base + ssId + partialRespParams, params);
var sheets = JSON.parse(resp.getContentText()).sheets;
for (var i = 0; i < sheets.length; i++) {
if (sheets[i].basicFilter
&& (sheets[i].basicFilter.range.sheetId == sheetId
|| (!sheets[i].basicFilter.range.sheetId && sheetId == 0))) {
return sheets[i].basicFilter;
}
}
return null;
}
当我尝试从电子表格绑定的应用程序脚本中调用此函数时,我收到错误消息“请求的身份验证范围不足”。
由于脚本以拥有文档的用户身份运行,并且正在使用 ScriptApp.getOAuthToken(),因此尚不清楚为什么会发生此错误。
任何帮助将不胜感激。
【问题讨论】:
标签: google-apps-script google-sheets google-sheets-api