我只想过滤 Google 工作表中的一个值,如 this question/answer .
我已经激活了sheets-api并查看了文档,如何添加oauth2验证。结论是,它应该自动发生,因为脚本是容器绑定(bind)的。
var ss = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(ss.getSheetByName('Aufgaben')); // change active sheet
var filterCriteria = {"type":"TEXT_CONTAINS","values":[{"userEnteredValue": "0001" }]}; // set filter
var filterSettings = {};
filterSettings.range = {sheetId: ss.getSheetByName('Aufgaben').getSheetId(), startRowIndex: 1};
filterSettings.criteria = {};
var columnIndex = 4;
filterSettings['criteria'][columnIndex] = {'condition': filterCriteria}; // Modified
var request = {setBasicFilter: {filter: filterSettings}};
Browser.msgBox(JSON.stringify({'requests': [request]})); //only works, when this line is added!
Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId()); `
该代码有效,但仅当我在 Sheets.Spreadsheets.batchUpdate()
上方添加 Browser.msgBox
一行时才有效。否则我会收到此错误:请求缺少所需的身份验证凭据。需要 OAuth 2 访问 token 、登录 cookie 或其他有效的身份验证凭据。请参阅https://developers.google.com/identity/sign-in/web/devconsole-project 。
在 onEdit(test:127)
因为我已经花了几个小时试图解决这个问题。 谢谢。
最佳答案
也许
// set filter
造成问题吗?
这对我来说没有 oauth2 验证:
var ss = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(ss.getSheetByName('Aufgaben')); // change active sheet
var filterCriteria = {"type":"TEXT_CONTAINS","values":[{"userEnteredValue": "4210"}]}; // Modified
var filterSettings = {};
filterSettings.range = {sheetId: ss.getSheetByName('Aufgaben').getSheetId(), startRowIndex: 1};
filterSettings.criteria = {};
var columnIndex = 4;
filterSettings['criteria'][columnIndex] = {'condition': filterCriteria}; // Modified
var request = {setBasicFilter: {filter: filterSettings}};
Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
<小时/>
编辑
我无法使用您提供的代码重现该问题。即使有消息框,我也收到错误。
如果您在编辑工作表时触发过滤功能,您可能需要尝试某个版本的 Google Apps 脚本电子表格服务:
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var criteria = SpreadsheetApp.newFilterCriteria().whenTextContains("0001").build();
var lastRow = sheet.getLastRow();
var lastCol = sheet.getLastColumn();
var range = sheet.getRange(2, 1, lastRow - 1, lastCol);
range.createFilter().setColumnFilterCriteria(4, criteria);
}
引用资料
关于javascript - 容器绑定(bind)脚本出现错误 "Expected OAuth 2 access token",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57344419/