Google Scripts - цикл задержки для сценария отправки SMS-сообщений - PullRequest
0 голосов
/ 16 марта 2019

Я превышаю лимит Carrier при отправке запросов на покупку товара от продавцов.

15-60 сообщений в минуту и ​​менее 200 уникальных получателей в день

Как я могу придерживаться следующих рекомендаций, если у меня есть 200-500 контактов в электронной таблице для сценария

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

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

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

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

  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, 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);
    }
  }
}

Спасибо за любую помощь!

1 Ответ

1 голос
/ 16 марта 2019

Это гарантирует менее 15 в минуту, и если вы положили 200 получателей или меньше на листы, названные по дням недели (т.е. воскресенье, понедельник, вторник, среда, четверг, пятница, суббота).На самом деле вы можете называть их как угодно и использовать имена снова в течение одной недели, если у вас на одном листе меньше 200 получателей, тогда как вы ограничиваете себя максимальным количеством в день.

function sendAll() {
  var shA=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];//sheet names
  var sheet = SpreadsheetApp.getActive().getSheetByName(shA[new Date().getDay()])
  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);
      Utilities.sleep(4000);//4 seconds
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...