谷歌脚本不通过行迭代

时间:2015-08-26 18:37:24

标签: google-apps-script google-sheets

我有一个谷歌脚本,将事件日期更改为一年中的某一天,因此2015年8月26日是237,并且还将今天的日期更改为一年中的某一天。然后,它将一年中的事件日期日期与当年的日期日期进行比较。如果事件日期整数小于今天的日期整数,则它会将Google日历中的事件描述更改为“事件已关闭”。问题是它只对电子表格中的第一个事件执行此操作。它不会遍历所有事件并更改今天之前的所有事件描述。

function compareDates(){
    var sheet = SpreadsheetApp.getActive().getSheetByName("Events");
    var data = sheet.getDataRange().getValues();
    var headerRow = 1;
    var i = 1;
    for (i = 1; i < data.length; i += 1) {
        var row = data[i];
        var room = row[5];
        var description = row[6];
        var agegroup = row[7];
        var registration = row[8];
        var calname = row[14];
        var registrants = row[17];
        var id = sheet.getRange(headerRow + 1, 16).getValues();
        var event = CalendarApp.getEventSeriesById(id);
        var description1 = (description + '\n' + '\n<b>Room:</b> ' + room + '\n' + '\n<b>Event Type:</b> ' + calname + '\n' + '\n<b>Age Group:</b> ' + agegroup);
        var today = parseInt(Utilities.formatDate(new  Date(sheet.getRange("U2").getValues()), "EST", "D"));
        var eventDate = parseInt(Utilities.formatDate(new Date(row[0]), "EST", "D"));
        var testED = sheet.getRange(headerRow + i, 22).setValue(eventDate);//To see if var Today works.
        var testT = sheet.getRange(headerRow + i, 23).setValue(today);//To see if var eventDate works.
            if (today > eventDate && registration === 'Y') {
                var descriptionHTMLEC = '\n <div id="registration_button" ><a style="text-align:right;color:white!important;text-decoration:bold;background-color:rgb(121,183,138);background-image:-webkit-linear-gradient(top,rgb(221,75,57),rgb(121,183,138nnn ));color:#ffffff;border:1px solid rgba(0,0,0,0);border-radius:2px;display:inline-block;font-size:12px;font-weight:bold;height:27px;line-height:27px;padding:0px 20px 0px 20px;text-align:center;text-transform:uppercase;white-space:nowrap;text-decoration:none;color:white" target="_blank">Event Closed</a>';
                var descriptionRegistrationEC = (description1 + '\n' + '\n' + descriptionHTMLEC);
                event.setDescription(descriptionRegistrationEC); 
            }
     }
}

1 个答案:

答案 0 :(得分:0)

您似乎在每次迭代时修改相同的事件。声明:

var id = sheet.getRange(headerRow + 1, 16).getValues();

每次都会为id分配相同的值。不应该是:

var id = sheet.getRange(headerRow + i, 16).getValues();

对于更易读的代码,您可以只使用日期对象上的getTime()函数。

 var today = new  Date(sheet.getRange("C2").getValues()).getTime();
 var eventDate = new Date(row[0]).getTime();