- Вы хотите выполнить связанный с контейнером сценарий Spreadsheet.
- Вы хотите выполнить сценарий с локального ПК или вне Google.
- Вы хотите выполнить сценарийиз таблицы ID.
Если мое понимание правильное, как насчет этого ответа?
Получение идентификаторов проекта сценария, связанного с контейнером:
Я думаю, что этосложная проблема в вашей ситуации.На текущем этапе нет методов получения идентификатора проекта сценария, привязанного к контейнеру, из родительских Документов Google (в данном случае это электронная таблица.).
- Об этом уже сообщалось вhttps://issuetracker.google.com/issues/111149037 как запрос функции.Но, к сожалению, это еще не достигнуто.
- Таким образом, идентификаторы проекта необходимо извлекать вручную.
- Например, вы можете получить идентификаторы проекта в Developer Hub.
- Когда вы выбираете проект, вы можете увидеть идентификатор проекта по URL-адресу
https://script.google.com/home/projects/### projectId ###
.
В приведенной выше ситуации требуются идентификаторы проектабыть вручную извлеченным из каждой таблицы, которую вы хотите запустить сценарий.Я извиняюсь, что не смог найти обходной путь для этой ситуации.
Выполнение сценария:
Я думаю, что есть 2 шаблона для выполнения сценария.Вы можете выбрать один из 2 образцов.
1.Используйте метод scripts.run в Apps Script API
- Это также упоминается в вашем вопросе.
- Функция в скрипте выполняется с использованием API.
- Вытребуется для создания только сценария Python на локальной стороне.
- В этом случае токен доступа, полученный процессом OAuth2, требуется на локальной стороне.
Я думаю, что в этом шаблонеСценарий может быть простым.
2.Использование веб-приложений
- При доступе к веб-приложениям выполняется функция в сценарии.
- В этом случае для выполнения сценария он использует scripts.run в Apps Script API из-за большого количества таблиц в вашей ситуации.Когда пользователь обращается к веб-приложениям, сценарий электронной таблицы запускается сценарием веб-приложений.Поскольку используется Google Apps Script, маркер доступа можно легко получить.
- Вам необходимо создать скрипт Python для доступа к веб-приложениям на локальной стороне и Google Apps Script в Google.Side (веб-приложения).
- В этом случае вы можете запустить скрипт с токеном доступа и без него на локальной стороне.
Я думаю, что в этом шаблоне методдоступ может быть простым.
Ссылки:
Если это не то, что вам нужно, я прошу прощения.
Редактировать:
Из обсуждений я подумал, что в случае вашего сценария Refresh()
подходит следующий поток.1. Разверните веб-приложения, используя скрипт Refresh()
, как API.2. Вызвать API, используя скрипт Python и curl.Таким образом, скрипт веб-приложений запускается, и вы можете отобразить результат Refresh()
для всех таблиц.
Пример сценария:
function doGet() {
var spreadsheets = ["spreadsheetId1", "spreadsheetId2",,,]; // Please set spreadsheet ID here.
for (var i = 0; i < spreadsheets.length; i++) {
SpreadsheetApp.openById(spreadsheets[i])
.getSheetByName("Sheet1") // If you want to also put values to other sheet, please modify this.
.getRange(1, 1)
.setValue(new Date());
}
return ContentService.createTextOutput("Done.");
}
- при развертывании веб-приложений, экран авторизации открыт.Но эта авторизация выполняется только один раз.
Развертывание веб-приложений:
Прежде чем отправлять запрос в веб-приложения, разверните веб-приложения.
- НаРедактор сценариев
- Публикация -> Развертывание как веб-приложение
- Создание новой версии проекта
- В поле "Выполнить приложения" выберите "Я"
- В поле «Кто имеет доступ к приложению» выберите «Любой, даже анонимный»
- Нажмите «Развернуть»
- Копировать «URL текущего веб-приложения»
- Нажмите «ОК»
Пример скручивания:
Если вы используете команду скручивания, используйте следующее.
$ curl -L "https://script.google.com/macros/s/#####/exec"
Примечание:
- Когда вы изменили скрипт, пожалуйста, повторно разверните Веб-приложения как новую версию.Таким образом, последний скрипт отображается в веб-приложениях. Это важный момент.
Примечание:
- Также вы можете использовать идентификаторы электронных таблиц для запросаи вы можете напрямую включить их в веб-приложения.(В примере сценария используется последний.)
- Если вы хотите использовать идентификаторы электронной таблицы для запроса, будьте осторожны.Число рабочих для веб-приложений должно быть меньше 30. Ref