【问题标题】:Google Scripts - delay loop for SMS texting scriptGoogle Scripts - SMS 短信脚本的延迟循环
【发布时间】:2019-03-15 22:11:27
【问题描述】:

我在向卖家发送购买商品的请求时遇到了承运人限制。

每分钟 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);
    }
  }
}

感谢您的帮助!

【问题讨论】:

    标签: javascript arrays loops google-apps-script google-sheets


    【解决方案1】:

    这保证每分钟少于 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
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      相关资源
      最近更新 更多