Мне нужна помощь в следующем случае
У меня есть электронная таблица, и она содержит несколько видов фильтров - f1
, f2
, ...
У меня есть приложениескрипт, связанный с электронной таблицей. Я включил Resources > Advanced Google Services
для доступа к Sheets API v4
.
В настоящее время я обращаюсь к этим данным как
var fruits = Sheets.Spreadsheets.Values.get("1YBPXShvssFpTI-5dPSsy_N_iEVaeHezdxymsdxpTy6w", "Fruits!A:B").values;
И получаю соответствующие данные обратно. Теперь я хотел бы получить только те данные, которые используются представлением фильтра, чтобы я не приводил полные данные, которые не нужны и замедляют обработку.
Я увидел, что есть нечто, называемоеSheets.Spreadsheets.getByDataFilter(resource, spreadsheetId)
, но я не уверен, как создать объект ресурса. Учитывая мои фильтры и зная идентификатор электронной таблицы, как мне получить данные только на основе известных им имен фильтров?
ОБНОВЛЕНИЕ
Моя последняя попытка выглядит как
var ss = SpreadsheetApp.getActiveSpreadsheet();
function getUnpostedItems() {
Logger.log("This function will prioritize the new items that are added into the inventory");
var sheet = ss.getSheetByName("Items");
var filterSettings = {};
filterSettings.criteria = {};
var condition = {
"condition": {
"type": "LESS_THAN",
"values": [
{ "userEnteredValue": "=NOW()-30" }
]
}
}
filterSettings['criteria'][1] = {
'condition': condition
};
var filterSettings = {
range: {
sheetId: sheet.getSheetId(),
},
}
var req = {
"setBasicFilter": {
"filter": filterSettings
}
}
// var items = Sheets.Spreadsheets.batchUpdate({'requests': [req]}, ss.getId());
var items = ss.getRange("Items!A:B").getValues()
// var items1 = Sheets.Spreadsheets.Values.get("1YBPXShvssFpTI-5dPSsy_N_iEVaeHezdxymsdxpTy6c", "Items!A:B").values
Logger.log("Found items:" + items.length);
return [];
}
Но пока не повезло!