Как настроить скрипт таким образом, чтобы каждый раз, когда на листе Google появлялась новая модификация, мой скрипт срабатывал и выполнялось какое-то действие - PullRequest
0 голосов
/ 19 января 2020

Я хочу написать скрипт так, чтобы каждый раз, когда на листе Google были изменения, мой python скрипт запускался и выполнял простое действие, такое как отправка мне или кому-то еще SMS-сообщения с уведомлением о том, что лист был изменен.

Пока что я могу подключить API листа Google для автоматической загрузки всего листа. Тем не менее, я не уверен, что лучший способ получить предупреждение и последовательно запустить мой сценарий для выполнения ряда действий. Я думаю о возможном использовании Flask, но не уверен, как именно это сделать?

Ответы [ 2 ]

1 голос
/ 20 января 2020

Ваша проблема может быть решена с помощью , запускающего выполнение сценария Python через Google Apps Script .

. Вы можете использовать устанавливаемый триггер, который будет отслеживать каждое изменение в вашей электронной таблице. После этого имеющийся у вас скрипт Python может быть размещен в облаке или на частном сервере, и вы можете запустить его выполнение с помощью функции UrlFetchApp(), которая отправит HTTP-запрос к конечной точке по вашему выбору.

  • Функция runScript() :
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);
}

Эта функция используется для запуска выполнения сценария Python.

  • Функция onChangeTrigger() :
function onChangeTrigger() {
  runScript();
  var recipient = "RECIPIENT_ADDRESS";
  var subject = "MAIL_SUBJECT";
  var body = "MAIL_CONTENT";
  MailApp.sendEmail(recipient, subject, body);
}

Эта функция является устанавливаемым триггером, используемым для мониторинга изменений в таблице и вызове runScript().

Кроме того, для устанавливаемого триггера должен быть выбран тип события , равный При изменении , например:

enter image description here

Кроме того, я предлагаю вам проверить следующие ссылки, поскольку они могут оказаться полезными:

0 голосов
/ 19 января 2020

Отправляет электронное письмо при каждом редактировании

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

function sendmessageonEdit(e) {
  var body=Utilities.formatString('Spreadsheet: %s\nSheet: %s\nRange: %s',e.source.getName(),e.range.getSheet().getName(),e.range.getA1Notation());
  MailApp.sendEmail('your email','Your Spreadsheet has been modified', body)

}

Требуется устанавливаемый триггер ,

function createSendMessageOnEditTrigger() {
  var ss=SpreadsheetApp.getActive();
  //Check for triggers with same name
  if(!isTrigger('sendmessageonEdit')) {
    ScriptApp.newTrigger('sendmessageonEdit').forSpreadsheet(ss.getId()).onEdit().create()
  }
}

Эта функция просто проверяет, что еще нет триггера с таким именем.

function isTrigger(funcName){
  var r=false;
  if(funcName){
    var allTriggers=ScriptApp.getProjectTriggers();
    for(var i=0;i<allTriggers.length;i++){
      if(funcName==allTriggers[i].getHandlerFunction()){
        r=true;
        break;
      }
    }
  }
  return r;
}

ScriptApp.newTrigger ()

Устанавливаемые триггеры

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