Google Apps脚本-设置一行仅在循环运行后才完成

时间:2020-03-04 16:32:33

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

我有Google Apps脚本,可将事件从电子表格输入事件到我的Google日历中。任何人都知道如何让脚本将行的背景色设置为绿色,并且将最后一列的值设置为“完成”(仅在循环中已通过该操作)?

目前,我只是将这些参数的完整范围设置为一个参数,但是如果最后一列等于“ Invalid”,则想阻止某些行被包含在内。

function inputEvents() {

  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarId = spreadsheet.getRange("B1").getValue();
  var calendar = CalendarApp.getCalendarById(calendarId)
  var lr = spreadsheet.getLastRow();
  var count = spreadsheet.getRange("A3:AF"+lr+"").getValues();

  for (x=0; x<count.length; x++) {

    var events = count[x]; 

    var name = events[2];
    var phone = events[3];
    var email = events[4];
    var title = events[5];
    var startTime = events[6];
    var endTime = events[7];
    var description = events[8];
    var location = events[9];
    var eventId = events[31];
    var contactHeader = "CONTACT:";
    var descriptionHeader = "DESCRIPTION:";
    var complete = "Complete";
    var invalid = "Invalid";

    var info = 
    contactHeader.bold() + "\n" 
    + name + "\n" 
    + phone + "\n" 
    + email + "\n" 
    + "\n" + descriptionHeader.bold() + "\n" 
    + description;

    var options = {
      'guests' : email,
      'description': info,
      'sendInvites': 'True',
      'location': location,
       }

    if (eventId != complete && eventId != invalid){
      calendar.createEvent(title, startTime, endTime, options);
      spreadsheet.getRange("AF3:AF"+lr+"").activate().setValue('Complete');
      spreadsheet.getRange("A3:AF"+lr+"").activate().setBackground('#d9ead3');   
    }
  }  
}

1 个答案:

答案 0 :(得分:0)

您在整个范围内使用setValuesetBackground方法,您只需将它们应用于您感兴趣的范围,请尝试设置currentRow变量,然后更改您在if语句中获得的范围,如下所示:

var currentRow = 3 + x;
if (eventId != complete && eventId != invalid){
  calendar.createEvent(title, startTime, endTime, options);
  spreadsheet.getRange("AF" + currentRow).setValue('Complete');
  spreadsheet.getRange("A"+ currentRow + ":AF" + currentRow).setBackground('#d9ead3');   
}