Скрипт Google Apps получает данные ограниченного листа из импортированного пакета

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

У меня есть электронная таблица с некоторыми данными и ограниченный скрипт с этой функцией:

function getIt()
{
  return SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("A1").getValue();
}

Скрипт работает как положено.

Затем у меня есть автономный скрипт/проект, в который я добавил вышеуказанный скрипт в качестве библиотеки. В этом автономном скрипте, если я попытаюсь library.getIt(), я получу ошибку:

TypeError: Cannot call method "getSheetByName" of null. (line 8, file "Code", project "Untitled project")

Что я хочу сделать, так это создать некоторые функции в скрипте, привязанном к листу, который получает/возвращает данные с листа. Затем я хочу иметь возможность добавить скрипт в качестве библиотеки к другим скриптам и получить указанные данные, вызвав эти функции.

Это возможно?

Хотя я не уверен, что это то направление, в котором вы хотите, например, когда используется Apps Script API, идентификатор файла Google Docs может быть получен из связанного сценария. Как насчет получения идентификатора файла Документов Google (идентификатор электронной таблицы) с помощью этого? Таким образом, электронная таблица связанного скрипта, который является библиотекой, может быть использована из скрипта, который установил библиотеку. Если это было не то направление, которое вы хотите, я извиняюсь.

Tanaike 01.06.2019 10:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не сможете getActiveSpreadsheet() из отдельного скрипта, попробуйте вместо этого использовать openById() или openByUrl().

Хотя ваш скрипт getIt() привязан к электронной таблице, я полагаю, что он попытается запустить getActiveSpreadsheet() для текущего файла скрипта, из которого вы его запускаете, который возвращает null, потому что он не привязан ни к какой электронной таблице.

Так есть ли способ заставить «импортированный» пакет/библиотеку работать в контексте листа, к которому он привязан?

IMTheNachoMan 28.05.2019 17:02

Попробуйте использовать getActive() вместо getActiveSpreadsheet(), я кое-что читал, и Google специально упомянул использование getActive() в своем документация библиотек.

ross 28.05.2019 17:31

Другие вопросы по теме

Наличие нескольких переменных данных
Как уменьшить количество вызовов службы Google App Script
Как заставить Google Sheets привязанный code.js читать и действовать на JavaScript из не содержащегося удаленного файла .js?
Проблема с проверкой данных в пакетном обновлении API Google Таблиц
Как подсчитать строки между двумя непустыми ячейками с их промежуточными пустыми ячейками в Google Sheets?
Автоматически отправлять электронную почту, когда ячейка в столбце имеет определенное значение
Поиск значения с другой вкладки/листа в листах Google на основе ссылки на ячейку
Как объединить отформатированные и неотформатированные ячейки, сохраняя при этом форматирование отформатированной ячейки для применения к объединенной ячейке в Google Таблицах?
Проблема с часовым поясом скрипта
Условное форматирование — ячейки в диапазоне, имеющие совпадающие значения из другого диапазона