我搜索了一些有关循环中 getRange() 错误的类似问题,但我仍然不确定最好的解决方案是什么。
迭代范围,将字符串附加到每个 无法在 Google 表格中找到方法 getRange(int,int)
我的列设置为: 列 1 复选框 列 2 事件列 3 开始列 4 结束列 5 描述 列 6 电子邮件 列 7 POC 列 8 事件 ID
此脚本运行检查的所有行,以确定是否存在当前 eventID,如果不存在,则创建一个新的 eventID 并设置其值。
这就是错误的来源:EventsData.getRange(row[7]).setValue(newEventID);
。
您能否给我一些关于如何最好地制定 getRange() 以包含循环的指导?
function ReplaceOrCreateEvent()
{
var cal = CalendarApp.getCalendarById("calendarID");
var EventsData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SHEET_NAME');
var rows = EventsData.getDataRange().getValues();
var headers = rows.shift();
rows.forEach(function(row)
{
if(row[0])
{
Logger.log(JSON.stringify(row));
var eventID = row[7];
if(eventID != 0)
{
var event = cal.getEventById(eventID);
event.deleteEvent();
Logger.log(event);
}
var title = row[1];
var desc = row[4];
var tstart = row[2];
var tstop = row[3];
var newEvent = cal.createEvent(title, tstart, tstop, {description:desc});
var newEventID = newEvent.getId();
EventsData.getRange(row[7]).setValue(newEventID);
Logger.log(newEventID);
}
});
}
我尝试为上述 getRange() 行设置静态值,该值有效:EventsData.getRange(2,8).setValue(newEventID);
但不会循环。
我尝试过使用EventsData.row[7].setValue(newEventID);
和eventID.setValue(newEventID);
,但不起作用。
我很欣赏你的寻找!
当你的放映脚本修改后,下面的修改如何?
修改后的脚本1:
通过此修改, 的值
newEventID
被放入已处理行的“H”列中。修改后的脚本2:
作为另一个修改,在上述修改的脚本的情况下,
setValue
在循环中使用。如果想把它移出循环来降低流程成本,下面的修改如何?