通过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(),因此不清楚为什么会发生此错误。
任何帮助都将不胜感激。
答案 0 :(得分:0)
首先,确保您在开发者控制台中启用了表格API 。
错误“<span class="logo">Logo click me</span>
”是请求中提供的OAuth 2.0令牌中的错误,指定的范围不足以访问请求的数据。
请确保使用正确且必要的scopes,如果您正确执行此处的步骤,请检查此Authorizing requests with OAuth 2.0。
您也可以尝试撤消访问权限并尝试重做它。
有关详细信息,请查看ScriptApp.getOAuthToken()
和此thread