如何获取 Sheet 的数据范围
How to get a data range of the Sheet
我需要获取 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
但是我不需要数据,我只需要数据范围的大小。有办法得到吗?
很遗憾,我找不到使用 Sheets API 直接检索 "the size of the data range" 的方法。因此,作为一种解决方法,我想建议使用 Web 应用程序。在您的情况下,您似乎已经拥有访问令牌。因此,此提案使用访问令牌访问 Web 应用程序。本提案流程如下
1。复制并粘贴此示例脚本
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()
。这样,授权就可以完成了。请忽略脚本错误。
2。部署 Web 应用程序:
部署Web Apps的条件如下。
- 在
doGet()
项目的脚本编辑器上。
- 发布 -> 部署为网络应用程序
- 对于"Execute the app as:",设置"Me".
- 对于"Who has access to the app:",设置"Only myself".
- 单击“部署”。
- Web 应用程序的副本 URL。
在上述情况下,只有使用访问令牌才能访问Web Apps。不使用access token时,报Unauthorized
returns的错误。 在这种情况下,请将 https://www.googleapis.com/auth/drive
加入范围。
3。卷曲样本:
这是卷曲示例。使用它,您可以检索 spreadsheet 的 LastRow 和 LastColumn。
当您使用它时,请将 URL 替换为您的 Web 应用程序的 URL,并输入 spreadsheet ID 和 sheet 名称。
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}
如果这对您没有用,我很抱歉。
我需要获取 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
但是我不需要数据,我只需要数据范围的大小。有办法得到吗?
很遗憾,我找不到使用 Sheets API 直接检索 "the size of the data range" 的方法。因此,作为一种解决方法,我想建议使用 Web 应用程序。在您的情况下,您似乎已经拥有访问令牌。因此,此提案使用访问令牌访问 Web 应用程序。本提案流程如下
1。复制并粘贴此示例脚本
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()
。这样,授权就可以完成了。请忽略脚本错误。
2。部署 Web 应用程序:
部署Web Apps的条件如下。
- 在
doGet()
项目的脚本编辑器上。- 发布 -> 部署为网络应用程序
- 对于"Execute the app as:",设置"Me".
- 对于"Who has access to the app:",设置"Only myself".
- 单击“部署”。
- Web 应用程序的副本 URL。
在上述情况下,只有使用访问令牌才能访问Web Apps。不使用access token时,报Unauthorized
returns的错误。 在这种情况下,请将 https://www.googleapis.com/auth/drive
加入范围。
3。卷曲样本:
这是卷曲示例。使用它,您可以检索 spreadsheet 的 LastRow 和 LastColumn。 当您使用它时,请将 URL 替换为您的 Web 应用程序的 URL,并输入 spreadsheet ID 和 sheet 名称。
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}
如果这对您没有用,我很抱歉。