Принудительно обновлять IMPORTRANGE через определенные промежутки времени

#google-sheets #google-drive-api #google-sheets-formula #importrange

#google-sheets #google-drive-api #google-sheets-формула #importrange

Вопрос:

Я видел несколько жалоб на задержку обновления данных через IMPORTRANGE в Google Sheets, но мне нужно обратное, и я не хочу, чтобы второй лист обновлялся автоматически, просто обновляйте, например, в конце дня.

Код уже выглядит следующим образом:

 =IMPORTRANGE("The Key","The_Page!B:D")
  

Ответ №1:

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

Когда к исходному листу добавляется отправка формы или что-то в этом роде, он обновляет свою собственную NOW ячейку и повторно обновляет собственную IMPORTRANGE ячейку. Вторая электронная таблица следует этому примеру, обновляя свою собственную NOW ячейку, чтобы предоставить исходному листу правильные данные. Поскольку вторая электронная таблица обновилась сама, она также обновляет основную IMPORTRANGE , которая обновляет данные, которые вы хотите отобразить в первую очередь, а также IMPORTRANGE ячейку, которая получает NOW ячейку из исходной электронной таблицы

По крайней мере, я уверен, что так оно и работает. Все, что я знаю, и все, что меня волнует, честно говоря, это то, что это работает

Ответ №2:

Может быть, вам нужно воспользоваться редактором сценариев и написать простую функцию такого рода:

 function importData()
{

var ss = SpreadsheetApp.getActiveSpreadsheet(); //source ss

var sheet = ss.getSheetByName("The_Page");      //opens the sheet with your source data

var values = sheet.getRange("B:D").getValues();   //gets needed values

var ts = SpreadsheetApp.openById("The Key");    //target ss - paste your key

ts.getSheetByName("Name of the target sheet").getRange("B:D").setValues(values);

}
  

А затем добавьте триггер, управляемый временем, к этому проекту (Ресурсы> Триггеры текущего проекта> Добавить новый).