获取Google表格仅在新行上执行脚本

问题描述 投票:1回答:1

我正在让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();
}
google-apps-script google-sheets twilio
1个回答
0
投票

您可以使用以下代码来设置和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);
}
© www.soinside.com 2019 - 2024. All rights reserved.