我正在让Twilio从Google表格发送短信。我正在使用Twilio开发人员提供的基本脚本。 (https://www.twilio.com/blog/2016/02/send-sms-from-a-google-spreadsheet.html)
目前,此代码对工作表上的每一行执行'function sendAll()',我希望此代码仅对新添加的行执行此功能。
或者,如果可以在给定行上执行此功能,则当用户将变量设置为YES时,这将更好。
提前致谢。
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();
}
您可以使用以下代码来设置和onEdit触发器。编辑单元格以添加“是”时,该行将用于发送SMS。插入正确的工作表名称,保存并重新加载。然后测试。
function onEdit(e) {
var SHEET_NAME = 'put sheet name here';
var value = 'YES';
var sheet = e.range.getSheet();
// check if correct sheet
if (sheet.getName() != SHEET_NAME) return;
// check if correct value
if (e.value != value) return;
// which row was edited
var row = e.range.getRow();
Logger.log(row);
// get that row values
var values = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
var status;
try {
Logger.log(values);
sendSms(values[0], values[1]);
status = 'sent';
} catch (err) {
Logger.log(err);
status = 'error';
}
sheet.getRange(row, 3).setValue(status);
}