GoogleScript - Google Sheets - необходимо изменить скрипт, чтобы пропустить любые строки текста, которые имеют соответствующую переменную - PullRequest
2 голосов
/ 15 марта 2019

У меня есть код, с которым мне нужна помощь.

Прямо сейчас, когда я запускаю сценарий, он запускается независимо от того, является ли состояние ПУСТОЙ или установлено на ОТПРАВЛЕНО.Мне нужно убедиться, что скрипт не запускается через строки SENT более одного раза.

Я не эксперт по скрипту Google Apps и не хочу нарушать функциональность скрипта.

function sendSms(to, body) {
  var messages_url = "https://api.twilio.com/2010-04-01/Accounts/MY_ID/Messages.json";

  var payload = {
    "To": to,
    "Body" : body,
    "From" : "+1PHONENUMBER"
  };

  var options = {
    "method" : "post",
    "payload" : payload
  };

  options.headers = { 
    "Authorization" : "Basic " + Utilities.base64Encode("MY_API:MY_API_TOKEN")
  };

  UrlFetchApp.fetch(messages_url, options);
}

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 Ответ

1 голос
/ 15 марта 2019
  • Вы хотите запустить sendSms(), если значение столбцов "C" не равно sent.

Если мое понимание верно, как насчет этой модификации?В этой модификации была изменена функция sendAll().

Модифицированный скрипт:

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

  for (i in data) {
    var row = data[i];
    if (row[2].toLowerCase() != "sent") { // Added
      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);
    }
  }
}

Если это не тот результат, который вам нужен, я прошу прощения.В то время, чтобы правильно понять вашу ситуацию, можете ли вы предоставить образец электронной таблицы для воспроизведения вашей ситуации?По этому я хотел бы изменить скрипт.

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