Применить фильтр и выбрать лист Google с заранее определенными динамическими данными
Я работаю над проектом, в котором я застреваю только на последнем этапе.
позвольте мне объяснить: мой проект по фильтрации данных и перемещению отфильтрованных данных в другую электронную таблицу (кстати, если вы видите этого Мариоса, большое спасибо за вашу помощь). все работают правильно, без проблем, но что-то произошло, и проблема в том, что мне нужно ввести динамические данные в качестве фильтра и имени листа. Я создал 2 переменные
location
который определит фильтр и
fromApp
который определит имя листа.
Моя цель - отправить данные через Интернет с их тегом, который будет отфильтрован на желаемом листе.
К вашему сведению: сценарий приложения привязан к gsheet.
Вот код:
function doGet(e) {
return querySheet(e);
}
function doPost(e) {
return querySheet(e);
}
**function tagValue(e) {
var location = e.parameter.location ; // send from app with respective tag
var fromApp = e.parameter.fromApp ; // send from app with respective tag**
}
function FilterOnText() {
var ss = SpreadsheetApp.getActive()
var range = ss.getDataRange();
var filter = range.getFilter() || range.createFilter()
var text = SpreadsheetApp.newFilterCriteria().whenTextContains(location); // the location will be as per the location variable in the tagValue function
filter.setColumnFilterCriteria(1, text);
}
function titleAsDate() {
const currentDate = Utilities.formatDate(new Date(), "GMT+8", "dd-MM-yyyy HH:mm:ss");
return SpreadsheetApp.create("Report of the " + currentDate);
}
function copyWithValues() {
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
const sourceSheet = spreadSheet.getSheetByName('fromApp'); // fromApp variable will define which sheet the data will be copied (situated in the tagValue function)
const temp_sheet = spreadSheet.insertSheet('temp_sheet');
const sourceRange = sourceSheet.getFilter().getRange();
sourceRange.copyTo(
temp_sheet.getRange('A1'),
SpreadsheetApp.CopyPasteType.PASTE_NORMAL,
false);
SpreadsheetApp.flush();
const sourceValues = temp_sheet.getDataRange().getValues();
const targetSpreadsheet = titleAsDate();
const rowCount = sourceValues.length;
const columnCount = sourceValues[0].length;
const targetSheet = targetSpreadsheet.getSheetByName('Sheet1').setName("Report"); // renamed sheet
const targetRange = targetSheet.getRange(1, 1, rowCount, columnCount);
targetRange.setValues(sourceValues);
spreadSheet.deleteSheet(temp_sheet);
}