Отправка видимых / отфильтрованных строк через SheetConverter и sendEmail в Google Sheets - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть лист в Google, и я хочу создать макрос / скрипт, который отправляет только видимые (отфильтрованные) строки, например строки для проверки.

В этом случае я хочу отправить через SheetConverter ( https://sites.google.com/site/scriptsexamples/custom-methods/sheetconverter) только строки с:

  • в строке A - Nr rej. POJ. только отфильтрованное значение ZYX,
  • в строке F - 09:00 только строки со значением 5.

enter image description here

Не могли бы вы изменить это для этих условий?

function sendEmail() {
  var spreadsheet = SpreadsheetApp.getActive();
  var document = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Raport - spedytorzy'), true);
  var sheet = spreadsheet.getActiveSheet();

  var dataraportu1 = Utilities.formatDate(new Date(), "GMT+2", "dd.MM.yyyy hh:mm")
  var subject = '[RAPORT - GODZINOWY] Pojazdy własne' + ' ' + dataraportu1}

  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Raport - spedytorzy'), true);
  var sheet = spreadsheet.getActiveSheet();

  var to = "xxx.xxx.pl";
  var name = "XXX";
  var body = '';

  var range = sheet.getRange('A:F');
  var htmlTable = SheetConverter.convertRange2html(range);
  var body = htmlTable
  GmailApp.sendEmail(to, subject, body,{name: name, htmlBody: body}); 
};
'''

1 Ответ

0 голосов
/ 07 апреля 2020

Выбор отфильтрованных строк

  • Простое решение - реализовать for l oop, который просматривает ваши данные и выбирает строки, соответствующие вашим критериям.
  • Эти строки могут быть помещены в новый массив
  • Если для использования SheetConverter требуется диапазон листов, а не массив значений, вы можете, например, назначить отфильтрованные значения вспомогательному листу
  • Ниже приведен пример создание нового диапазона с отфильтрованными строками во вспомогательном листе «шаблон» (который необходимо создать первым) и передача нового диапазона в SheeConverter.
function sendEmail() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getSheetByName('Raport - spedytorzy');
  var dataRange = sheet.getDataRange();
  var values = dataRange.getValues();
  var filteredValues = [];
  if(values.length!=0){
    for (var i = 0; i < values.length; i++) {

      if (values[i][0]=="ZYX" && values[i][5]==5) {
        Logger.log("yes");
        filteredValues.push(values[i]);
      }
    }
    var template = spreadsheet.getSheetByName("template");
    template.clear();
    if(filteredValues.length!=0){
      var templateRange = template.getRange(1,1, filteredValues.length, filteredValues[0].length);
      templateRange.setValues(filteredValues); 
      var dataraportu1 = Utilities.formatDate(new Date(), "GMT+2", "dd.MM.yyyy hh:mm")
      var subject = '[RAPORT - GODZINOWY] Pojazdy własne' + ' ' + dataraportu1;
      var to = "xxx.xxx.pl";
      var name = "XXX";
      var body = '';
      var range = templateRange;
      var htmlTable = SheetConverter.convertRange2html(range);
      var body = htmlTable;
      GmailApp.sendEmail(to, subject, body,{name: name, htmlBody: body}); 
    }
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...