【发布时间】:2015-03-09 17:10:33
【问题描述】:
我已经尝试了好几天,阅读其他帖子,使用其他接近相同目的但没有任何效果的脚本。我正在尝试制作一个脚本,该脚本将从基于网络的谷歌表单中获取信息,以及一个月/一天,并将其转换为日历中重复发生的事件。
它现在终于发布到日历上,但每个事件都在 2015 年 12 月 31 日之前出现未定义 - 没有进一步的信息,尽管至少它正在再次发生。
在我尝试理解此编码及其操作方法时,我们将不胜感激。谢谢!
//this is the ID of the calendar to add the event to, this is found on the calendar settings page of the calendar in question
var calendarId = "id@group.calendar.google.com";
//below are the column ids of that represents the values used in the spreadsheet (these are non zero indexed)
var startDtId = 5;
var endDtId = 5;
var titleId = 2;
var descId = 3;
var formTimeStampId = 1;
function getLatestAndSubmitToCalendar() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var lr = rows.getLastRow();
var startDt = sheet.getRange(lr,startDtId,1,1).getValue();
//set to first hour and minute of the day.
// startDt.setHours(0);
// startDt.setMinutes(00);
var endDt = sheet.getRange(lr,endDtId,1,1).getValue();
//set endDt to last hour and minute of the day
// endDt.setHours(23);
// endDt.setMinutes(59);
// var subOn = "Submitted on :"+sheet.getRange(lr,formTimeStampId,1,1).getValue();
var desc = sheet.getRange(lr,descId,1,1).getValue();
var title = sheet.getRange(lr,titleId,1,1).getValue();
createAllDayEvent(calendarId,title,startDt,endDt,recurrence,loc,desc);
}
function createAllDayEventSeries(calendarId,title,startDt,endDt,recurrence,loc,desc) {
var cal = CalendarApp.getCalendarById('id@group.calendar.google.com');
var start = new Date(startDt);
var end = new Date(endDt);
var loc = descId;
var desc = "Happy Birthday "+titleId+" of "+descId;
// Creates a rule that recurs every week for ten weeks.
var recurrence = CalendarApp.newRecurrence().addYearlyRule();
var event = cal.createAllDayEventSeries(title, start, recurrence, {
description : desc,
location : loc
});
};
【问题讨论】:
-
您是否确保与填写表格的任何人共享日历?由于脚本必须经过授权,并且表单的提交是通过帐户进行的,因此他们必须有权访问日历。
标签: google-apps-script scripting google-calendar-api google-forms