Скрипт Google в электронной таблице не выполняется - PullRequest
0 голосов
/ 18 октября 2018

У меня есть главная электронная таблица, которая содержит скрипт, который отправляет запрос POST на мой сервер onEdit с текущим идентификатором электронной таблицы.

function post2Server(){
  ss = SpreadsheetApp.getActiveSpreadsheet();

  payload                   = {};
  payload['spreadsheet_id'] = ss.getId();

  headers = {
    'Content-Type': 'application/json',
    'Accept'      : 'application/json'
  }

  options = {
    'method'     : 'post',
    'contentType': 'application/json',
    'headers' : headers,
    'payload' : JSON.stringify(payload)
  }

  res = UrlFetchApp.fetch(MY_SERVER_URL, options);
  return;
}

Эта функция работает, как и предполагалось, на основном листе.Теперь, когда я использую Python google API для создания копии этого мастер-листа, сценарий копируется, однако, не запускается.Я получаю сообщение об ошибке ....

Произошла ошибка сервера.Пожалуйста, попробуйте сохранить проект еще раз.

Почему это не работает?В копии электронной таблицы я даже создаю новую функцию, которая просто записывает «привет» и получает ту же ошибку.Похоже, что после того, как Python SDK скопировал мастер-лист, функции не запускаются.Это проблема с разрешениями?Как я могу заставить скрипт выполняться в любой последующей копии мастер-листа?

1 Ответ

0 голосов
/ 28 октября 2018

Обычно мой подход к такого рода требованиям заключается в использовании scripts.run метода Google Apps Script REST API .Таким образом, вы полностью контролируете, какие сценарии выполняются и какие параметры.

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

  • РазвертываниеПроект сценария как исполняемый файл API
  • Предоставьте токен OAuth с соответствующей областью для выполнения
  • Убедитесь, что сценарий и вызывающее приложение совместно используют общий проект Cloud Platform

Если вам нужна более подробная информация, в документации есть выделенная страница , в которой объясняется, как запустить определенный метод вашего скрипта приложений, а внизу у вас есть образец во многихдругой язык, включая python.

...