在Apps脚本中使用相同工作表的Google表格API

时间:2016-10-03 18:36:10

标签: google-apps-script google-sheets google-sheets-api

通过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(),因此不清楚为什么会发生此错误。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先,确保您在开发者控制台中启用了表格API

错误“<span class="logo">Logo click me</span>”是请求中提供的OAuth 2.0令牌中的错误,指定的范围不足以访问请求的数据。

请确保使用正确且必要的scopes,如果您正确执行此处的步骤,请检查此Authorizing requests with OAuth 2.0

您也可以尝试撤消访问权限并尝试重做它。

有关详细信息,请查看ScriptApp.getOAuthToken()和此thread

的文档