Я работаю над веб-приложением GAS, которое читает электронную таблицу (оно не связано с электронной таблицей и не может быть связано с другими причинами).Ускорение загрузки электронных таблиц в Google
загружает в листе или диапазон его, как это:
var ss = SpreadsheetApp.openById(ssId);
dataSheet = ss.getSheetByName('Projects');
var data = dataSheet.getRange('A1:BL').getValues();
Я сделал много испытаний, и с моей слегка населенной A1: BL5500 таблицу (с изрядным числом ячейки, заполненные несколькими десятками символов текста), время загрузки занимает около 6 секунд. Я пробовал названные диапазоны и множество вещей, но не могу получить его быстрее, чем это.
Мне действительно нужно 1 столбец листа, затем я ищу поиск нужной строки, а затем мне нужна эта строка. Но загрузка столбца 1 занимает примерно столько же времени, сколько и загрузка всего объекта. Есть лучший способ сделать это? Задержка является проблематичной.
Вот разбивка времени:
SpreadsheetApp.openById(ssid) [0.174 seconds]
Spreadsheet.getSheetByName([Projects]) [0 seconds]
Sheet.getRange([A1:BL]) [0.387 seconds]
Range.getValues() [6.483 seconds]
Для сравнения, вот загружается только один столбец:
SpreadsheetApp.openById(ssid) [0.164 seconds]
Spreadsheet.getSheetByName([Projects]) [0 seconds]
Sheet.getRange([A1:A]) [0.336 seconds]
Range.getValues() [5.887 seconds]
Это только один работает, временные различия не существенны (они различаются).
У меня есть работа: я создал новый лист, один столбец которого равен столбцу, который мне нужно найти. Я загружаю это. Когда я заканчиваю свой поиск, я загружаю только соответствующую строку из полного листа. Это занимает общее время примерно от 8 секунд до 2, что может быть приемлемым. – KeithKeithBoBeith
Пожалуйста, добавьте это решение в качестве ответа. –
Я также обнаружил, что синтаксический анализ опубликованных csv ss будет намного быстрее. –