kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 user1464409
user1464409
Вопрос

Возможно ли сделать ImportRange в Google Apps Script?

Сегодня я играю с Google Apps Script и пытаюсь написать несколько пользовательских функций электронной таблицы. Я провел несколько поисков, но не смог найти ответ на свой вопрос.

Я знаю, что в электронной таблице Google можно использовать ImportRange в ячейке таблицы следующим образом:

=ImportRange(spreadsheet_key;sheet!range_of_cells)

Мои вопросы заключаются в том, можно ли сделать что-то подобное в сценарии Google Apps Script и если да, то как?

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

7 2012-06-21T17:38:43+00:00 3
Программирование
google-sheets
google-apps-script
Решение / Ответ
Serge insas
Serge insas
21-го июня 2012 в 6:07
2012-06-21T18:07:17+00:00
Дополнительно
Источник
Редактировать
#16497677

Да, это вполне возможно. Вам просто нужно вызвать SpreadsheetApp.openById и затем нормально получить нужный лист и диапазоны.

Пожалуйста, взгляните на документацию : range.getValues() и range.setValues() являются очень базовыми методами GAS и довольно хорошо описаны.

Прочитайте также учебник.

Henrique  G. Abreu
Henrique G. Abreu
Редактировал ответ 22-го июня 2012 в 3:59
Best Practices  |  Apps Script  |  Google Developers
developers.google.com
5
0
 illmortem
illmortem
1-го июля 2015 в 9:23
2015-07-01T21:23:55+00:00
Дополнительно
Источник
Редактировать
#16497679

Похоже, что Google в своей бесконечной мудрости изменил поведение openById и подобных функций. Они больше не разрешены в контексте пользовательских функций.

Более подробную информацию см. на сайте https://code.google.com/p/google-apps-script-issues/issues/detail?id=5174.

Они предлагают использовать IMPORTRANGE в качестве обходного пути, но, как уже говорилось, ее нужно вызывать внутри ячейки.

Наше решение заключалось в использовании IMPORTRANGE в листе и передаче полученных данных в нашу пользовательскую функцию, поскольку набор данных был небольшим. Надеюсь, эта информация поможет!

2
0
 Ben
Ben
28-го января 2013 в 8:34
2013-01-28T08:34:05+00:00
Дополнительно
Источник
Редактировать
#16497678

Недавно мне понадобилось сделать это. Вот что я придумал, просто жестко закодировав ключ электронной таблицы и диапазон в функции ahab's myImportRange.

// to be used in the spreadsheet like so:  = myScriptedImportRange( GoogleClock() )
// no need to include key or range because they are in the script here
// 
// the third parameter - GoogleClock() - triggers an automatic update every minute.
// updated 2011-07-17 (ahab): better regex to strip sheetname of *outer* single quotes
// updated 2013-01-27 (ben) to hard-code key and range 
function myScriptedImportRange(  ) { 
 var key = "PUT YOUR DATA_SPREADSHEET_ID IN HERE"
 var sheetrange = "PUT YOUR SHEET AND CELL RANGE IN HERE"
 var shra = sheetrange.split("!") ;
 if (shra.length==1) shra[1]=shra[0], shra[0]="";  

 var sheetstring = shra[0].replace( /^'(.*)'$/g , "$1") // was: replace( /'/g , "") ; updated 2011-07-17 (ahab)
 var rangestring = shra[1] 

 var source = SpreadsheetApp.openById( key )    
 if ( sheetstring.length==0 ) sheet = source.getSheets()[0] ;
 else sheet = source.getSheetByName( sheetstring ) ;

 return  sheet.getRange( rangestring ).getValues(); 
}

В моем случае у меня есть набор личных листов, промежуточный лист, который использует обычный myImportRange и VMERGE с некоторым SQL для объединения выборок из личных листов в промежуточный лист, а затем общий лист, который просто имеет одну ячейку, содержащую = myScriptedImportRange( GoogleClock() ).

Обратите внимание, что здесь используется аналогичный подход: https://stackoverflow.com/a/11857014.

Обратите внимание, что функция ImportRange и связанные с ней функции часто сталкиваются с проблемой неотображения импортированных данных, когда исходная рабочая книга (книги) не открыта. Простой способ решения этой проблемы был описан в комментарии здесь: https://stackoverflow.com/a/11786797.

 Community
Community
Редактировал ответ 23-го мая 2017 в 12:16
1
0
Похожие сообщества 8
Чат | Google Таблицы и скрипты
Чат | Google Таблицы и скрипты
4 404 пользователей
канал: @google_sheets оглавление: @google_sheet_toc заказ работы: @namokonov правила чата: t.me/google_spreadsheets_chat/242967
Открыть telegram
Google Apps & API. Скрипты, Таблицы, BigQuery, Отчеты, Автоматизация
Google Apps & API. Скрипты, Таблицы, BigQuery, Отчеты, Автоматизация
1 035 пользователей
Чат посвящен вопросам обработки данных и автоматизации работ с помощью сервисов Google (Sheets, Docs, Scripts, BigQuery, Data Studio и т.д.). G Suite чат t.me/gsuiterc | Персональные консультации @oshliaer | Сайт contributor.pw
Открыть telegram
adwords_masters
adwords_masters
784 пользователей
Я - рядом! @iryadom
Открыть telegram
GDG St.Petersburg
GDG St.Petersburg
576 пользователей
Наша основная цель — делиться знаниями. Мы организуем различные события, приглашаем инженеров прямо из Google, а также даём возможность любому участнику сообщества показать себя в качестве спикера. MeetUp: https://www.meetup.com/gdgspb/
Открыть telegram
Google Cloud Platform_ru
Google Cloud Platform_ru
378 пользователей
Русскоязычное обсуждение google_cloud_platform
Открыть telegram
GDG Moscоw
GDG Moscоw
203 пользователей
Чат сообщества Google Developers Group Moscow Канал со всеми анонсами и новостями: https://t.me/gdgmsk Правила: - уважайте друг друга - ссылки на вакансии согласуйте с админами - начните свое общение здесь с приветствия (ссылка в первом сообщении - бан)
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Денис Васьков
Зарегистрирован 16 часов назад
2
Dima Patrushev
Зарегистрирован 2 дня назад
3
sirojidddin otaboyev
Зарегистрирован 1 неделю назад
4
Елена Гайдамамакинат
Зарегистрирован 1 неделю назад
5
Иван Степанюк
Зарегистрирован 1 неделю назад
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией