У меня проблемы со скриптом, который не выводит правильное значение. В остальном он работает точно так, как задумано. Вот весь сценарий:
var statusColumnPos = [2,5]; // Position of status column
var searchColumn = 3 // Column C to search for number of entries
var dataTab = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Booking Tracker"); // Get sheet by Name
var accountSID = "accountSID"; // account SID
var token = "accessToken"; // access token
var authorizationEncoded = "Basic " + Utilities.base64Encode(accountSID+":"+token);
var twillioNumber = "xxxxxxxxxx" // twillio number
var twillioAPI = "https://api.twilio.com/2010-04-01/Accounts/"+accountSID+"/Messages.json"
function getSmsDataFromCell(pos) {
var cell = dataTab.getRange(pos, statusColumnPos[1]);
var smsNumber = cell.offset(0, 1).getDisplayValue();
var smsMessage = cell.offset(0,2).getDisplayValue();
return [smsNumber, smsMessage];
}
function statusChecker() {
var searching = true;
var count = 1;
while(searching) {
var value = dataTab.getRange(count,searchColumn);
if (value.getValue() == "") {
searching = false;
break;
} else {
count++;
}
}
var values = dataTab.getRange(statusColumnPos[0], statusColumnPos[1], count - 2);
var arr = values.getValues();
var newArr = [];
for(var i = 0; i < arr.length; i++)
{
if (arr[i][0] === "READY") {
newArr = newArr.concat(i+2);
}
}
for (var i = 0; i < newArr.length; i++) {
var data = getSmsDataFromCell(newArr[i]);
dataTab.getRange(newArr[i], statusColumnPos[1] + 3).setValue("SENDING");
var result = sendMessage(data[1], data[0], twillioNumber);
if (result) {
dataTab.getRange(newArr[i], statusColumnPos[1] + 3).setValue("SENT");
} else {
dataTab.getRange(newArr[i], statusColumnPos[1] + 3).setValue("FAILED")
}
}
}
function sendMessage(message, to, from) {
var formData = {
'Body': message,
'From': from,
'To': to,
};
var options = {
'method' : 'post',
'contentType': 'application/x-www-form-urlencoded',
'payload' : formData,
'headers' : {
'Authorization': authorizationEncoded
}
};
var response = UrlFetchApp.fetch(twillioAPI, options);
if (response.getResponseCode() === 200 ) {
return true
} else {
Logger.log(response.getContentText());
return false
};
}
У меня есть проблема c, которая заключается в том, что либо этот раздел не возвращает TRUE:
var response = UrlFetchApp.fetch(twillioAPI, options);
if (response.getResponseCode() === 200 ) {
return true
} else {
Logger.log(response.getContentText());
return false
};
Или следующее утверждение не работает как и предполагалось:
var result = sendMessage(data[1], data[0], twillioNumber);
if (result) {
dataTab.getRange(newArr[i], statusColumnPos[1] + 3).setValue("SENT");
} else {
dataTab.getRange(newArr[i], statusColumnPos[1] + 3).setValue("FAILED")
}
}
}
SMS-сообщения отправляются в соответствии с назначением, но вместо отправки SENT после отправки это приводит к ОТКАЗУ после отправки. Структура мне кажется здоровой, поэтому я не хочу «быстро исправлять» ее, меняя SENT / FAILED в моем скрипте. Кто-нибудь видит то, чего я не вижу?