在同一工作表的应用程序脚本中使用Google Sheet API [英] Using Google Sheets API from within Apps Script for same Sheet
本文介绍了在同一工作表的应用程序脚本中使用Google Sheet API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
通过SpreadsheetApp global,使用绑定到电子表格的Apps脚本来影响工作表非常简单。但是,有些功能只能从Google Sheets 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(),因此不清楚发生此错误的原因。
如有任何帮助,我们将不胜感激。
推荐答案
首先,确保在开发人员控制台中启用Sheets API。
错误"Request had insufficient authentication scopes
"是请求中提供的OAuth 2.0令牌中的错误,指定的作用域不足以访问请求的数据。
确保使用正确且所有必要的scopes,如果正确按照此处的步骤操作,请选中Authorizing requests with OAuth 2.0。
您还可以尝试吊销访问权限,然后尝试重新执行该操作。
有关详细信息,请查看ScriptApp.getOAuthToken()
和thread的文档
这篇关于在同一工作表的应用程序脚本中使用Google Sheet API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文