Apps Script обновляет данные в определенных столбцах на другом листе - PullRequest
0 голосов
/ 10 июля 2019

Этот код работает для обновления значений для даты «обновления» и состояния в столбцах на другом листе, где совпадает значение столбца «keyid». Запуск по расписанию с проверкой данных испытаний на даты в течение последних 5 дней. Для тех элементов, которые попадают в этот диапазон дат, обновите эти элементы на целевом листе с новой обновленной датой и новым статусом.

Добавлено Примечание. Функция updateExistingRows () - это только один шаг, вызываемый из основной функции, которая запускается из синхронизированного триггера. У основной функции есть шаг, который запускает сохраненный процесс на сервере SQL, чтобы обновлять основную рабочую таблицу при каждом запуске процесса (очищает его и заполняет его).

Мне потребовалось немного времени, чтобы понять, мне было любопытно, есть ли лучший способ использовать скрипт приложений для проверки изменений между листами и выполнения обновлений. Листы не имеют одинаковые столбцы данных. В большинстве примеров я нашел, где добавлять строки, чтобы не обновлять определенные элементы в строке.

Примечание. Если я не добавлю +1 к этим строкам:

targetTab.getRange(n+1,8) 

это записало значение в строке выше на моем целевом листе. Вот мой код:

function updateExistingRows() {
  var date = new Date();
  var sss = SpreadsheetApp.openById('xxxxxxxx');
  var sourceTab = sss.getSheetByName('Sheet1'); 
  var srcrg = sourceTab.getDataRange();
  var srcvA = srcrg.getValues();
  var tss = SpreadsheetApp.openById('yyyyyyyy');
  var targetTab = tss.getSheetByName('Sheet3');
  var tarrg = targetTab.getDataRange();
  var tarvA = tarrg.getValues();
  var source_data = sourceTab.getDataRange().getValues();
  var target_data = targetTab.getDataRange().getValues();

  for (var n = 1 ; n < source_data.length ; n++) {
    if (source_data[n][11] >= new Date(date.getTime()-5*(24*3600*1000)) ) {
      if (source_data[n][8] = target_data[n][5]) {
        var new_updated = source_data[n][11];
        var new_status = source_data[n][13];
        targetTab.getRange(n+1,8).setValue(new_updated);
        targetTab.getRange(n+1,10).setValue(new_status);
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...