Начать вычисления только после полного импорта CSV - PullRequest
0 голосов
/ 22 января 2019

Я создаю файл CSV каждую ночь для загрузки из другой системы.Мне нужно, чтобы этот CSV импортировался в Google Sheets каждый день.Мои Google Sheets берут данные CSV и выполняют множество различных расчетов для получения окончательного набора данных.

Я смог выполнить всю эту работу, используя функцию для загрузки данных CSV в Google Sheets, как показанониже:

 function importCSVFromGoogleDrive() {

 var file = DriveApp.getFilesByName("DualCreditExport.csv").next();
 var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
 var sheet = SpreadsheetApp.getActive().getSheetByName('CURRENT');
 sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);

}

Это работало нормально, пока мой CSV-файл не превышал 3500 строк.Причина в том, что, как только загружено несколько строк, мои гугл листы начинают выполняться.Они проходят через несколько минут, затем загрузка продолжается и перезапуски calcs.

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

Однако запуск сценария импорта занимает всего 15 секунд.Расчеты занимают около 5 минут.Поэтому, если бы мне удалось завершить импорт, а затем выполнить вычисления, все было бы в порядке.

Буду признателен за любые идеи о том, как загрузить CSV-файл полностью.

1 Ответ

0 голосов
/ 24 января 2019

Одним из способов избежать немедленного пересчета является использование автономного проекта сценария или проекта, привязанного к другой электронной таблице, и SpreadsheetApp.openById(id) или SpreadsheetApp.openByUrl(url) вместо Spreadsheet.getActive(); таким образом, что целевая электронная таблица не открываетсяпользователем во время выполнения скрипта импорта.Это потому, что помимо вычислений, требуемых для задачи пересчета, существует задача синхронизации между клиентом, который открыл электронную таблицу и подачу, и нет другого способа приостановить / остановить пересчет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...