Могу ли я использовать внешнюю программу для запуска пользовательских скриптов в таблицах Google?

TL; DR; Может ли сценарий .py запускать сценарий Google Apps?

Hi!

Используя API Google, мне удалось создать скрипт .py, который может открывать и редактировать лист Google. Затем я хочу, чтобы программа могла выбрать настраиваемую вкладку пользовательского интерфейса на листе и запустить функцию (написанную во встроенном скрипте Google Apps).

Если есть более простой способ сделать это, мы будем благодарны за любой вклад! :)

Программа, которую я написал, находится здесь:

import gspread
from oauth2client.service_account import ServiceAccountCredentials
from pprint import pprint
import datetime

scope = ["https://spreadsheets.google.com/feeds",'https://www.googleapis.com/auth/spreadsheets',"https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive"]

creds = ServiceAccountCredentials.from_json_keyfile_name("creds.json", scope)

client = gspread.authorize(creds)

#^this authorizes the programs mail and stuff

sheet = client.open("Proggetest").sheet1 #opens sheet

now = datetime.datetime.now()
ctime = now.strftime("%d.%m.%Y %H:%M:%S") #time and date

sheet.update_cell(5, 5, "updated by prog. : " + ctime) 
#updates cell 5E


#INSERT CODE THAT RUNS APPS SCRIPT HERE:) 

Часть пользовательского интерфейса на листе находится здесь (написана во встроенном скрипте Google Apps).

var ui = SpreadsheetApp.getUi();

function buildTESTmenu() {

  ui.createMenu('Tests')
    .addSubMenu(ui.createMenu('colours')
      .addItem('Change a cells colour', 'TESTmenu.changeColour')) #.changeColour pulls a function that changes the cells colour
    .addSubMenu(ui.createMenu('Data')
      .addItem('Change number in cell', 'TESTmenu.setValue'))#.setValuepulls a function that changes the cells value to a set number
    .addToUi()
}

Любая помощь приветствуется!

Спасибо!


person Ole Gunnar    schedule 31.01.2021    source источник
comment
Хотя я не уверен, смог ли я правильно понять ваш вопрос, на данном этапе пользовательским интерфейсом нельзя управлять извне. Но в случае функций скрипта Google Apps без использования пользовательского интерфейса эти функции могут выполняться с использованием веб-приложений с токеном доступа, полученным из учетной записи службы. Как насчет этого? Если я неправильно понял ваш вопрос, прошу прощения.   -  person Tanaike    schedule 01.02.2021
comment
Вы правильно поняли вопрос :) Я не особо разбираюсь в кодировании, поэтому UI был просто идеей для выполнения сценария GAS :) Но небольшой уточняющий вопрос; что такое веб-приложения? Спасибо за отзыв, кстати ‹3   -  person Ole Gunnar    schedule 01.02.2021
comment
Спасибо за ответ. Сведения о веб-приложениях можно найти на странице здесь. Когда используются веб-приложения, функции скрипта Google Apps можно запускать путем запроса из скрипта python. И, если вы хотите использовать токен доступа для запроса, вы также можете этого добиться. Кроме того, вы можете запускать функции без использования токена доступа. Хотя я не уверен в деталях TESTmenu.changeColour и TESTmenu.setValue, вы хотите запускать эти функции с помощью python? Мое предложение совпадает с вашим направлением?   -  person Tanaike    schedule 01.02.2021
comment
@Tanaike TESTmenu.changeColour и TESTmenu.setValue - это лишь некоторые примеры функций, которые я придумал :) Я добровольно работаю координатором бюджета студенческого фестиваля, где все бюджеты написаны в таблицах Google. Предоставление доступа к редактированию всех бюджетов новому человеку - очень утомительный процесс, хотя у нас есть сценарий GA на листах, который делает это автоматически. .Py должен открывать все листы и запускать скрипт. Что вы думаете об ответе TheMasters? подходит ли google-apps-script-api для этой задачи лучше, чем создание веб-приложения? Спасибо еще раз:))   -  person Ole Gunnar    schedule 01.02.2021
comment
Спасибо за ответ. Я также думаю, что функции Google Apps Script могут выполняться через Google Apps Script API. Но сервисный аккаунт не может использовать Apps Script API. Об этом уже упоминалось в существующем ответе. В качестве обходного пути я предложил использовать веб-приложения. Потому что я думал, что обходной путь может достичь вашей цели. Судя по вашему ответу, я также думаю, что ваша цель может быть достигнута с помощью веб-приложений.   -  person Tanaike    schedule 02.02.2021
comment
Окей круто! Спасибо ‹3   -  person Ole Gunnar    schedule 07.02.2021


Ответы (1)


Вы можете запустить google-apps- script через google-apps-script-api из питон. Но есть ограничения. Самое главное, что сервисные учетные записи нельзя использовать с API. Далее, я не думаю, что вы можете манипулировать ui, когда функция вызывается в контексте выполнения api.

person TheMaster    schedule 31.01.2021
comment
Ааааааааааааааааааа! Но если я не могу использовать сервисную учетную запись, что я могу использовать для работы программы? Другой тип учетной записи? Извините, если я немного медленный, у меня был только один семестр программирования на Python, поэтому я изучаю это для забавы на стороне :)). Кстати, спасибо за быстрый ответ! Я очень ценю это ‹3 - person Ole Gunnar; 31.01.2021
comment
@OleGunnar Вы можете использовать обычную учетную запись Google / личную учетную запись Gmail. - person TheMaster; 31.01.2021