Применить фильтр и выбрать лист 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);
  }

0 ответов