使用Javascript中的Oauth授权将Google表格API v3迁移到v4之后如何实现makeApiCall()方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Javascript中的Oauth授权将Google表格API v3迁移到v4之后如何实现makeApiCall()方法相关的知识,希望对你有一定的参考价值。
Google已经构建了Google表格API的第4版,但其文档仍然是v3。没有关于如何使用Google表格API v4实施简单OAuth身份验证的完整示例。
我看到一个迁移指南here,我也看到了一个部分示例here但是一个完整的例子无处可寻。 “当前”版本是here,它最后更新于2018年10月,没有提供v4示例。
让我们说在我授权用户之后,我正在尝试阅读workbook2中的特定电子表格,并且我明确指出了我需要的列。然后我使用Google Visualization API呈现该信息。
所以,这就是我在Google表格v3遗产中的表现。
function makeApiCall() {
var queryString = encodeURIComponent('SELECT A,B,C,E,H');
var tqURL = new google.visualization.Query(
'https://docs.google.com/spreadsheets/d/*yourspreadsheetid*/gviz/tq?gid=*yourworkbookid*&headers=1&tqx=responseHandler:handleTqResponse' + '&access_token=' + encodeURIComponent(gapi.auth.getToken().access_token));
tqURL.send(handleTqResponse);
}
function handleTqResponse(resp) {
var dataTable = resp.getDataTable();
}
对于v4,如果我按照这个部分示例here,如何将tqURL转换为GET方法?我怎样才能将响应(rsp)作为DataTable()获得?
function makeApiCall() {
var params = {
spreadsheetId: 'my-spreadsheet-id', // all clear here
//what about workbook gid?
// The ranges to retrieve from the spreadsheet.
ranges: [], // [A:A,B:B,C:C,E:E,H:H) ????
includeGridData: false,
//no need to include the access_token here?
};
var request = gapi.client.sheets.spreadsheets.get(params);
request.then(function(response) {
console.log(response.result);
//var dataTable = responce.getDataTable(); ??
}, function(reason) {
console.error('error: ' + reason.result.error.message);
});
}
- 您已经能够使用Sheets API。 在API控制台上启用了Sheets API。 访问令牌可用于从电子表格中检索值。
- 您想从工作表中检索
A:A,B:B,C:C,E:E,H:H
的值。 - 您想要从Sheets API检索的值中使用
getDataTable()
检索dataTable。
如果我的理解是正确的,那么这个修改怎么样?在此修改中,我在您的问题中修改了您的脚本。请将此视为几个答案中的一个。
Modification points:
- 要从
A:A,B:B,C:C,E:E,H:H
检索值,请使用Sheets API中的values.get方法。 在这种情况下,首先,检索A:H
的值,并检索列A,B,C,E和H的值。 - 要使用
getDataTable()
检索dataTable,请使用ChartWrapper类。
Modified script:
function makeApiCall() {
var params = { // Modified
spreadsheetId: 'my-spreadsheet-id',
range: 'Sheet1!A:H', // Retrieve the values of "A:H".
};
var request = gapi.client.sheets.spreadsheets.values.get(params); // Modified
request.then(function(response) {
var values = response.result.values.map((e) => [e[0], e[1], e[2], e[4], e[7]]); // Added
var w = new google.visualization.ChartWrapper({dataTable: values}); // Added
var dataTable = w.getDataTable();
}, function(reason) {
console.error('error: ' + reason.result.error.message);
});
}
Note:
- 当使用Sheets API中的values.get方法时,请使用a1Notation作为范围。所以在这种情况下,范围变成
Sheet1!A:H
。这意味着“Sheet1”的“A:H”。
References:
如果我误解了你的问题并且结果不是你想要的,我道歉。
我不相信Sheets API(V4)中有Visualization API的模拟。从技术上讲,可视化API实际上不是传统Sheets API(V3)的一部分。如果它是Charts API的一部分。所以你应该能够继续使用它。
您甚至可以直接在GAS中使用服务器端(请参阅Using Bound Google Scripts to Generate a Query Object)。
以上是关于使用Javascript中的Oauth授权将Google表格API v3迁移到v4之后如何实现makeApiCall()方法的主要内容,如果未能解决你的问题,请参考以下文章