Можно ли сделать макрос в электронной таблице Google для выполнения кода python? - PullRequest
0 голосов
/ 22 февраля 2020

Лично я чувствую себя более комфортно при создании сценария в python, и в нем больше библиотек, чем макросов. Но если нет выбора .. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Ваша проблема может быть решена с помощью триггера onOpen(e) и размещения вашего python script в Google Cloud.

1. Используйте триггер onOpen(e)

Триггер onOpen(e) используется для создания меню MY MENU в вашей электронной таблице каждый раз, когда открывается электронная таблица. Кроме того, элемент подменю TRIGGER THE PYTHON SCRIPT будет иметь функцию runScript(), связанную с ним, и каждый раз, когда вы щелкаете по ней, эта функция запускается.

onOpen(e) behavior

Указанное выше поведение может быть достигнуто с помощью этого фрагмента в скрипте приложений

function onOpen(e) {
  SpreadsheetApp.getUi()
      .createMenu('MY MENU')
      .addItem('TRIGGER THE PYTHON SCRIPT', 'runScript')
      .addToUi();
}

2. Разместите скрипт Python в Google Cloud

Вы должны разместить скрипт Python в Google Cloud как Cloud Function и запустить код.

runScript() функция вызывается меню TRIGGER THE PYTHON SCRIPT сверху, и фрагмент выглядит примерно так.

function runScript() {
  var params = {
    'method': 'post',
    'headers': {
      'contentType': 'application/json',
      'payload': '{"name":"Name"}'
    }
  };
  var pyScript = UrlFetchApp.fetch('https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/FUNCTION_NAME', params);
}

Примечание: Вы можете изменить params в зависимости от вашего сценария и ваших желаемых действий.

Ссылка

0 голосов
/ 22 февраля 2020

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

Google API листов Python быстрый запуск
Google Apps Script

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...