我需要获取Sheet的数据范围。我必须两次调用API。
GET https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/Sheet1?majorDimension=ROWS
// Height is result.length
GET https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/Sheet1?majorDimension=COLUMNS
// Width is result.length
但我不需要数据,我只需要数据范围的大小。有办法实现吗?
答案 0 :(得分:1)
不幸的是,我找不到使用Sheets API直接检索“数据范围大小”的方法。因此,作为一种解决方法,我建议使用Web Apps。在您的情况下,您似乎已经拥有访问令牌。因此,此提案使用访问令牌访问Web Apps。该提案的流程如下:
function doGet(e) {
var id = e.parameter.id;
var sheetName = e.parameter.sheetname;
var result = {};
try {
var ss = SpreadsheetApp.openById(id).getSheetByName(sheetName);
result.LastRow = ss.getLastRow();
result.LastColumn = ss.getLastColumn();
} catch(er) {
result.Error = er;
}
return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
}
复制并粘贴后,请直接运行doGet()
。这样,授权就可以完成。请忽略脚本错误。
部署Web Apps的条件如下:
doGet()
在项目的脚本编辑器上。
在上述情况下,只有在使用访问令牌时才能访问Web Apps。未使用访问令牌时,Unauthorized
的错误将返回。 在这种情况下,请在示波器中加入https://www.googleapis.com/auth/drive
。
这是卷曲样本。使用此功能,您可以检索电子表格的LastRow和LastColumn。 使用此功能时,请将URL替换为Web Apps的URL,并输入电子表格ID和工作表名称。
curl -GL \
-H "Authorization: Bearer ### your access token ###" \
-d "id=### spreadsheet ID ###" \
-d "sheetname=### sheet name ###" \
"https://script.google.com/macros/s/#####/exec"
样本结果:
{"LastRow":10,"LastColumn":10}
如果这对你没用,我很抱歉。