我的Google Apps脚本代码有问题 . 我试图让它在我的工作表的一行上获取信息并创建一个单独的Calendar事件,包括开始和结束时间 .
//push new events to calendar
function pushToCalendar() {
//spreadsheet variables
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var range = sheet.getRange(2,1,lastRow,16);
var values = range.getValues();
var numValues = 0;
for (var i = 0; i < values.length; i++) {
//check to see if Age, Competition, Start Date, Start Time and End Date & Time are filled out
if ((values[i][0].length == '<>') && (values[i][1].length == '<>') && (values[i][4].length == '<>') && (values[i][5].length == '<>') && (values[i][6].length == '<>') && (values[i][7].length == '<>')) {
//check if it's been entered before
if ((values[i][8] == '')||(values[i][8] == null)) {
//create event https://developers.google.com/apps-script/class_calendarapp#createEvent
var newEventTitle = 'Game: ' + values[i][0] + ' - ' + values[i][1];
var startDay = Utilities.formatDate(new Date(values[i][3]), 'America/Chicago', 'MMMM dd, yyyy');
var startTime = Utilities.formatDate(new Date(values[i][4]), 'America/Chicago', 'HH:mm');
var start = startDay + ' ' + startTime;
var endDay = Utilities.formatDate(new Date(values[i][5]), 'America/Chicago', 'MMMM dd, yyyy');
var endTime = Utilities.formatDate(new Date(values[i][6]), 'America/Chicago', 'HH:mm');
var end = endDay+ ' ' + endTime;
var newEvent = CalendarApp.getDefaultCalendar().createEvent(newEventTitle, new Date(start), new Date(end), {location: values[i][12]});
//get ID
var newEventId = newEvent.getId();
//mark as entered, enter ID
sheet.getRange(i+2,8).setValue(newEventId);
} //could edit here with an else statement
}
numValues++;
}
}
我在前3列中有相关信息(在事件 Headers 中使用),在第4列中有开始日期,在第5列中有开始时间,第6列中有结束日期,第7列有结束时间 . 其他列包含我的信息将添加到事件的描述中 .
我主要遇到的问题是将数据集过滤到尚未推送到日历的事件,以及脚本在推送事件后准确记录,以便它能够过滤它脚本的下一个循环 .
如果您需要我的更多信息,请通知我 .
在此先感谢您的帮助!亚当
2 回答
我得到了它的工作 . 我最初在值检查行中引用了错误的列 . 傻我 .
电子表格有 Headers 行
第1列(值[i] [0])是事件 Headers 信息
第2列(值[i] [1])是事件 Headers 信息
第3列(值[i] [2])是事件 Headers 信息
第4列(值[i] [3])是开始日期
第5列(值[i] [4])是开始时间
第6列(值[i] [5])是结束日期
第7列(值[i] [6])是结束时间
第8列(值[i] [7])如果事件已被推送到日历,则包含'y'
第9列(value [i] [8])包含脚本创建的事件的EventID
之后的列具有可添加到事件描述的相关事件信息
我修改了一些代码但不多 . 这里是 . 我能够在日历上获得所有六个事件而且几乎没有变化 .
这是我的测试数据 .