Как отправить SMS на основе содержимого ячейки в Google Sheets - PullRequest
1 голос
/ 19 июня 2019

Это продолжение моего последнего вопроса Как зациклить функцию onEdit для отправки электронных писем из нескольких строк в Google Sheets? Теперь, чтобы завершить этот проект, мне нужно иметь возможность отправлять SMS на основесодержимое ячейки.

Я использую Twilio, и код из их примера https://www.twilio.com/blog/2016/02/send-sms-from-a-google-spreadsheet.html позволяет мне отправлять тексты на ВСЕ номера в электронной таблице, когда я запускаю функцию.В этом вопросе есть некоторая помощь Отправьте SMS с Google Sheet , однако, поскольку я использую Twilio вместо электронных писем, я все еще застреваю.

На данный момент этот первый блок кода позволяет отправлять все тексты одновременно, когда я запускаю функцию (sendSMS содержит всю информацию API и не отображается):

function sendAll() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('HIVE');
  var startRow = 2; 
  var width = 16;
  var numRows = sheet.getLastRow() - 1; 
  var dataRange = sheet.getRange(startRow, 2, numRows, width) 
  var data = dataRange.getValues();

  for (i in data) {
    var row = data[i];
    try {
      response_data = sendSms(row[4], row[12]);
      status = "sent";
    } catch(err) {
      Logger.log(err);
      status = "error- Not Sent";
    }
    sheet.getRange(startRow + Number(i), 2).setValue(status);
  }
}

Я попытался повторить шаблон, использованный для отправки электронных писем в моем последнем вопросе, вставив:

if (sheet.getSheetName() == sheetname && range.columnStart == 1) {
    var data = sheet.getRange(range.getRow(), 1, 1, 21).getValues()[0];
    var object = {
      to: data[5] // Column "E"
    if (e.value == "Appt. Set (send text)") {
      object.subject = "Appt. Confirmation";
      object.body = apptText; // variable containing body text

      if (object.subject) sendSms(object);

Я обновил код, чтобы он вызывал onEdit, но только для первого оператора IF:

function onEditText(e) {
  var sheetname = "HIVE";
  var sheet = e.range.getSheet();
  var range = e.range;
  var timezone = "GMT-5";
  var timestamp_format = "MMMM dd 'at' HH:mm";
  var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
  var twilioNumber = 1234567890;

  if (sheet.getSheetName() == sheetname && range.columnStart == 1) {
    var data = sheet.getRange(range.getRow(), 1, 1, 21).getValues()[0];
    var object = {
      to: data[5] // Column "E"
    };
    var apptText = "Hey " + data[9] + "! ?\n\nThanks...;
    var leadText = "Hey " + data[9] + "! ?\n\nThanks so...;
    var followText = "Hey " + data[9] + "! ? \n\nAre...;
    var confirmText = "Hey " + data[9] + "! ⏰ \n\nYour appointment...;

    if (e.value == "Appt. Set (send text)") {
      object.subject = "Appt. Confirmation";
      object.body = apptText; //
      SpreadsheetApp.getActiveSheet().getRange(range.getRow(),2,1,1).setValue('Appt. Set Text sent on ' + date);
    } else if (e.value == "Lead (send 1st text)") {
      object.subject = "Lead";
      object.body = leadText; //
      SpreadsheetApp.getActiveSheet().getRange(range.getRow(),2,1,1).setValue('Lead 1st Text sent on ' + date);
    } else if (e.value == "3rd Text") {
      object.subject = "Follow Up";
      object.body = followText; 
      SpreadsheetApp.getActiveSheet().getRange(range.getRow(),2,1,1).setValue('3rd Text sent on ' + date);
    }else if (e.value == "Day of Confirm (send text)") {
      object.subject = "Can't wait to meet you!";
      object.body = confirmText;  
      SpreadsheetApp.getActiveSheet().getRange(range.getRow(),2,1,1).setValue('Confirmation Text sent on ' + date);
    }
    if (object.subject) sendSms(data[5], twilioNumber);
  }
}
...