Google 电子表格 API 返回错误 "Cannot call method "batchUpdate" 未定义。"
Google Spreadsheet API returning error "Cannot call method "batchUpdate" of undefined."
我正在尝试使用给出的脚本来回答这个问题
google spreadsheet script - Enable filter with a range by script
目的是在电子表格上创建基本过滤器。
这是脚本
function applyFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId();
var dataSheet = ss.getActiveSheet();
var lastRow = dataSheet.getLastRow();
var lastColumn = dataSheet.getLastColumn();
var sheetId = dataSheet.getSheetId();
var filterSettings = {
"range": {
"sheetId": sheetId,
"startRowIndex": 0,
"endRowIndex": lastRow,
"startColumnIndex": 0,
"endColumnIndex": lastColumn
}
};
var requests = [{
"setBasicFilter": {
"filter": filterSettings
}
}];
Logger.log(requests );
Logger.log(" ssid: " + ssId);
try{
Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
}
catch(e){Logger.log(e.message)}
}
这些是我上次尝试 运行 的日志,最后一行是我遇到的错误
[17-09-17 10:32:57:700 BST] [{setBasicFilter={filter={range={endColumnIndex=26, endRowIndex=3756, sheetId=519417536, startColumnIndex=0.0, startRowIndex=0.0}}}}]
[17-09-17 10:32:57:701 BST] ssid: 1-05tNvAddY6gwzK9GYC4aMG347XARy_yUXZRcXxgHIk
[17-09-17 10:32:57:702 BST] Cannot call method "batchUpdate" of undefined.
ssid正确,sheetId正确。我在资源中打开了 Google 工作表 API - 我在 Google API 控制台
中启用了它
如果有人能告诉我我做错了什么,我将不胜感激
根据您的问题,发现您已经在 API 控制台启用了 Sheets API。但错误显示 Cannot call method "batchUpdate" of undefined.
。所以我认为 Sheets API 可能没有在 Advanced Google 服务中启用。请确认如下。
- 在脚本编辑器中,select 资源 > 高级 Google 服务
- 在出现的对话框中,单击 Google Sheets API v4 的 on/off 开关。请开启。
- 单击“确定”按钮。
如果这对您没有用,我很抱歉。
编辑:
在此示例中,UrlFetchApp.fetch()
使用表格 API v4 而不是高级 Google 服务。
function applyFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId();
var dataSheet = ss.getActiveSheet();
var lastRow = dataSheet.getLastRow();
var lastColumn = dataSheet.getLastColumn();
var sheetId = dataSheet.getSheetId();
var filterSettings = {
"range": {
"sheetId": sheetId,
"startRowIndex": 0,
"endRowIndex": lastRow,
"startColumnIndex": 0,
"endColumnIndex": lastColumn
}
};
var requests = [{
"setBasicFilter": {
"filter": filterSettings
}
}];
Logger.log(requests );
Logger.log(" ssid: " + ssId);
var url = "https://sheets.googleapis.com/v4/spreadsheets/" + ssId + ":batchUpdate"
var params = {
method:"post",
contentType: "application/json",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
payload: JSON.stringify({"requests": requests}),
muteHttpExceptions: true,
};
var res = UrlFetchApp.fetch(url, params).getContentText();
Logger.log(res)
}
我正在尝试使用给出的脚本来回答这个问题 google spreadsheet script - Enable filter with a range by script
目的是在电子表格上创建基本过滤器。
这是脚本
function applyFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId();
var dataSheet = ss.getActiveSheet();
var lastRow = dataSheet.getLastRow();
var lastColumn = dataSheet.getLastColumn();
var sheetId = dataSheet.getSheetId();
var filterSettings = {
"range": {
"sheetId": sheetId,
"startRowIndex": 0,
"endRowIndex": lastRow,
"startColumnIndex": 0,
"endColumnIndex": lastColumn
}
};
var requests = [{
"setBasicFilter": {
"filter": filterSettings
}
}];
Logger.log(requests );
Logger.log(" ssid: " + ssId);
try{
Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
}
catch(e){Logger.log(e.message)}
}
这些是我上次尝试 运行 的日志,最后一行是我遇到的错误
[17-09-17 10:32:57:700 BST] [{setBasicFilter={filter={range={endColumnIndex=26, endRowIndex=3756, sheetId=519417536, startColumnIndex=0.0, startRowIndex=0.0}}}}]
[17-09-17 10:32:57:701 BST] ssid: 1-05tNvAddY6gwzK9GYC4aMG347XARy_yUXZRcXxgHIk
[17-09-17 10:32:57:702 BST] Cannot call method "batchUpdate" of undefined.
ssid正确,sheetId正确。我在资源中打开了 Google 工作表 API - 我在 Google API 控制台
中启用了它如果有人能告诉我我做错了什么,我将不胜感激
根据您的问题,发现您已经在 API 控制台启用了 Sheets API。但错误显示 Cannot call method "batchUpdate" of undefined.
。所以我认为 Sheets API 可能没有在 Advanced Google 服务中启用。请确认如下。
- 在脚本编辑器中,select 资源 > 高级 Google 服务
- 在出现的对话框中,单击 Google Sheets API v4 的 on/off 开关。请开启。
- 单击“确定”按钮。
如果这对您没有用,我很抱歉。
编辑:
在此示例中,UrlFetchApp.fetch()
使用表格 API v4 而不是高级 Google 服务。
function applyFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId();
var dataSheet = ss.getActiveSheet();
var lastRow = dataSheet.getLastRow();
var lastColumn = dataSheet.getLastColumn();
var sheetId = dataSheet.getSheetId();
var filterSettings = {
"range": {
"sheetId": sheetId,
"startRowIndex": 0,
"endRowIndex": lastRow,
"startColumnIndex": 0,
"endColumnIndex": lastColumn
}
};
var requests = [{
"setBasicFilter": {
"filter": filterSettings
}
}];
Logger.log(requests );
Logger.log(" ssid: " + ssId);
var url = "https://sheets.googleapis.com/v4/spreadsheets/" + ssId + ":batchUpdate"
var params = {
method:"post",
contentType: "application/json",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
payload: JSON.stringify({"requests": requests}),
muteHttpExceptions: true,
};
var res = UrlFetchApp.fetch(url, params).getContentText();
Logger.log(res)
}