Получите Google Sheets для выполнения скрипта только на самой новой строке - PullRequest
1 голос
/ 16 апреля 2019

Я получаю от Twilio отправку SMS-сообщений из Google Sheets.Я использую базовый скрипт, предоставленный разработчиком Twilio.(https://www.twilio.com/blog/2016/02/send-sms-from-a-google-spreadsheet.html)

В настоящее время этот код преобразует функцию «sendAll ()» для каждой строки на листе. Я хочу, чтобы этот код выполнял эту функцию только для вновь добавленных строк.

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

Заранее спасибо.

function sendAll() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; 
  var numRows = sheet.getLastRow() - 1; 
  var dataRange = sheet.getRange(startRow, 1, numRows, 2) 
  var data = dataRange.getValues();

  for (i in data) {
    var row = data[i];
    try {
      response_data = sendSms(row[0], row[1]);
      status = "sent";
    } catch(err) {
      Logger.log(err);
      status = "error";
    }
    sheet.getRange(startRow + Number(i), 3).setValue(status);
  }
}

function myFunction() {
  sendAll();
}

1 Ответ

0 голосов
/ 16 апреля 2019

Вы можете использовать приведенный ниже код для настройки и запуска триггера.Когда вы редактируете ячейку, добавляя «ДА», эта строка будет использоваться для отправки SMS.Введите правильное имя листа, сохраните и перезагрузите.Затем проверьте.

function onEdit(e) {
  var SHEET_NAME = 'put sheet name here';
  var value = 'YES';

  var sheet = e.range.getSheet();

  //  check if correct sheet
  if (sheet.getName() != SHEET_NAME) return;

  // check if correct value
  if (e.value != value) return;

  // which row was edited
  var row = e.range.getRow();
  Logger.log(row);
  // get that row values
  var values = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];

  var status;

  try {
    Logger.log(values);
    sendSms(values[0], values[1]);
    status = 'sent';
  } catch (err) {
    Logger.log(err);
    status = 'error';
  }
  sheet.getRange(row, 3).setValue(status);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...