作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Google Sheets API
.问题是,一旦我在谷歌电子表格上调用我的脚本函数,我就会收到以下错误:
API call to sheets.spreadsheets.values.get failed with error: The request is missing a valid API key. (line 5).
line 5
在脚本中看起来像这样:
var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
和
spreadsheetId
和
rangeName
在第一行中定义。
= function()
调用该函数.
最佳答案
当您通过自定义函数(如 =myFunction()
)使用 Sheets API 时放到一个单元格中,就会发生这样的错误。运行自定义函数时,ScriptApp.getOAuthToken()
返回 null
.我认为这是您出现问题的主要原因。不幸的是,我认为这就是规范。为了避免这个问题,我想提出 2 个解决方法。
解决方法 1:
电子表格服务的一部分可以在自定义函数中使用。因此,使用它,它与 var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;
获得相同的结果.对于您的脚本,openById()
不能使用。所以脚本如下。
示例脚本:
function customFunc() {
var rangeName = "#####"; // Please set this.
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var values = sheet.getRange(rangeName).getValues();
return values;
}
ScriptApp.getOAuthToken()
在自定义函数中运行,
null
被退回。为了避免这种情况,作为一种方法,使用 PropertiesService 将访问 token 直接提供给自定义函数。示例流程如下。
onOpenFunc()
在示例脚本中。 // Please install OnOpen trigger to this function.
function onOpenFunc() {
PropertiesService.getScriptProperties().setProperty("accessToken", ScriptApp.getOAuthToken());
}
function customFunc() {
var spreadsheetId = "#####"; // Please set this.
var rangeName = "#####"; // Please set this.
var accessToken = PropertiesService.getScriptProperties().getProperty("accessToken");
var url = "https://sheets.googleapis.com/v4/spreadsheets/" + spreadsheetId + "/values/" + rangeName;
var res = UrlFetchApp.fetch(url, {headers: {"Authorization": "Bearer " + accessToken}});
var obj = JSON.parse(res.getContentText());
var values = obj.values;
return values;
}
关于google-apps-script - 谷歌表格, "The request is missing a valid API key",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55100926/
我是一名优秀的程序员,十分优秀!