在同一工作表的应用程序脚本中使用Google Sheet API [英] Using Google Sheets API from within Apps Script for same Sheet

查看:0
本文介绍了在同一工作表的应用程序脚本中使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆