Дополнительно
Возможно ли сделать ImportRange в Google Apps Script?
Сегодня я играю с Google Apps Script и пытаюсь написать несколько пользовательских функций электронной таблицы. Я провел несколько поисков, но не смог найти ответ на свой вопрос.
Я знаю, что в электронной таблице Google можно использовать ImportRange в ячейке таблицы следующим образом:
=ImportRange(spreadsheet_key;sheet!range_of_cells)
Мои вопросы заключаются в том, можно ли сделать что-то подобное в сценарии Google Apps Script и если да, то как?
Я хочу импортировать диапазон ячеек из листа в другой электронной таблице (не из листа в таблице, где будет находиться сценарий).
7
3
Да, это вполне возможно. Вам просто нужно вызвать
SpreadsheetApp.openById
и затем нормально получить нужный лист и диапазоны.Пожалуйста, взгляните на документацию :
range.getValues()
иrange.setValues()
являются очень базовыми методами GAS и довольно хорошо описаны.Прочитайте также учебник.
Похоже, что Google в своей бесконечной мудрости изменил поведение openById и подобных функций. Они больше не разрешены в контексте пользовательских функций.
Более подробную информацию см. на сайте https://code.google.com/p/google-apps-script-issues/issues/detail?id=5174.
Они предлагают использовать IMPORTRANGE в качестве обходного пути, но, как уже говорилось, ее нужно вызывать внутри ячейки.
Наше решение заключалось в использовании IMPORTRANGE в листе и передаче полученных данных в нашу пользовательскую функцию, поскольку набор данных был небольшим. Надеюсь, эта информация поможет!
Недавно мне понадобилось сделать это. Вот что я придумал, просто жестко закодировав ключ электронной таблицы и диапазон в функции ahab's
myImportRange
.В моем случае у меня есть набор личных листов, промежуточный лист, который использует обычный
myImportRange
и VMERGE с некоторым SQL для объединения выборок из личных листов в промежуточный лист, а затем общий лист, который просто имеет одну ячейку, содержащую= myScriptedImportRange( GoogleClock() )
.Обратите внимание, что здесь используется аналогичный подход: https://stackoverflow.com/a/11857014.
Обратите внимание, что функция
ImportRange
и связанные с ней функции часто сталкиваются с проблемой неотображения импортированных данных, когда исходная рабочая книга (книги) не открыта. Простой способ решения этой проблемы был описан в комментарии здесь: https://stackoverflow.com/a/11786797.