Как узнать точное время, когда IMPORTRANGE обновил данные в листах Google? - PullRequest
0 голосов
/ 19 февраля 2020

На листе 1 я импортирую данные из другой электронной таблицы - «источника», используя IMPORTRANGE. Исходный лист извлекает данные из Google Analytics. Исходный лист обновляется новыми данными. Это также отражено в листе 1. Новые данные могут иметь дубликаты из предыдущих данных. Я хочу получить уникальные данные, сравнивая их с предыдущими данными или, другими словами, при следующем обновлении importrange мне нужны уникальные ссылки (данные), которых не было при предыдущем обновлении impotrrange.

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

Существует ли сценарий, который может отследить время обновления importrange и выполнить уникальное сравнение с предыдущими данными?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Этого можно добиться с помощью Google Apps Script для обработки логики c и сохранения уникальных ссылок в глобальной переменной или свойстве скрипта.

Пример:

  1. Источник лист получает новые данные. -> Запустить ваш скрипт.
  2. Скрипт использует ссылки из источника; проверяет глобальную переменную / свойство скрипта и добавляет к нему новые уникальные значения.
  3. Скрипт вводит уникальные данные в место назначения.

Полезные ссылки:

0 голосов
/ 19 февраля 2020

данные> исходная электронная таблица> (через importrange) конечная электронная таблица_1 и новые данные в конечную электронную таблицу_2?

Если это то, что вы имеете в виду:

function doSomeThing(){

var ss = SpreadsheetApp.getActiveSpreadsheet();

var sheetOne = ss.getSheetByName("AAA");
var dataOne = sheetOne.getRange(1,1,sheetOne.getMaxRows(),sheetOne.getMaxColumns()).getValues();

var sheetTwo = ss.getSheetByName("BBB");


var colNumberDataToCompare = 5; //for example
var dataToCompare = sheetTwo.getRange(1,colNumberDataToCompare,sheetTwo.getLastRow(),1).map(function(cell){return cell[0]}); 
var hlpArray = [];

  for(var i=0;i<dataOne.length;i++){

    if(dataToCompare.indexOf(dataOne[i][colNumberDataToCompare]) == -1){

      hlpArray.push([dataOne[i]])

    }

  }
  if(hlpArray[0]){

    sheetTwo.getRange(sheetTwo.getLastRow()+1,1,hlpArray.length,hlpArray[0].length);

  }

}

Если нет, извините.

...