Котятки, привет)
Сегодня я расскажу вам о варианте решения одной из наболевших проблем гугл таблиц - importrange с большим количеством инфы, работать-то работает, но крайне глючно. Мое решение - несложный скрипт.
Для теста нам понадобятся:
- тест импорта источник
- тест импорта назначение (скрипт пишем здесь)
Для начала объявляем переменные для документов:
В документе источника решаем, что будем импортить, как правило это конкретные столбцы. Допустим столбцы “запись 4” и “запись 7”
В скрипте эта запись выглядит так:
Примечание: в доке назначения заранее добавьте строки, если вставляемое число строк больше того, что есть в назначенном документе
Дальше очистим значения листа в итоговом документе, это нужно, чтобы не оставалось лишних данных
И указываем диапазоны :
Dest.getRange(1,1,Lr), где 1 номер начальной строки, lr номер последней строки и 1 посередине - номер столбца ,куда будет записываться данные
Все, готово:)
Готовый скрипт выглядит вот так, согласитесь крайне несложно)) :
Скрипт готов, теперь поговорим, как же его запустить. Есть два варианта:
1. Добавить триггер самообновления
Настроить периодичность обновления скрипта
Например: обновление раз в сутки или каждые 4 часа
Или же можно воспользоваться вторым способом
2) Вставить рисунок, и обозначить скрипт
Вставляем рисунок и нажимаем на 3 точки
Дальше выбираем “назначить скрипт”
Пишем название скрипта до скобок (в скрипте это название функции):
Теперь при нажатии на эту картинку будет исполняться скрипт :)
Готово!) И не пугайтесь, если скрипт отрабатывает, как вам кажется слишком долго, учитывая объем инфы - полторы минуты эт норма.
Р.S. Готовый скрипт:
function import_data() {
const CURRENT = SpreadsheetApp.getActiveSpreadsheet();
const Dest = CURRENT.getSheetByName("Dest");
const SOURCE = SpreadsheetApp.openById("1JjqIJln5IKjNaLBMRVQAH72x8doTZLykf_3JeB1i0wQ");
const Source = SOURCE.getSheetByName("Source");
const dataArr = Source.getRange("A:A").getValues();
const zapis4Arr = Source.getRange("E:E").getValues();
const zapis7Arr = Source.getRange("H:H").getValues();
const lr = Source.getMaxRows();
Dest.clearContents();
Dest.getRange(1,1,lr).setValues(dataArr);
Dest.getRange(1,2,lr).setValues(zapis4Arr);
Dest.getRange(1,3,lr).setValues(zapis7Arr);
}