google-apps-script - Google Apps 脚本根据条件发送不同的电子邮件,日期的日历事件列表
问题描述
使用下面的脚本,我试图根据不同的条件发送不同的电子邮件。该表格正在处理会议请求。其中一封电子邮件包括正文部分,其中列出了当天的日历事件。
它很快就崩溃了:“ TypeError: Cannot read property 'list' of undefined ” 在该var events = CalendarApp.Events.list(calId, {
行中。
我明白为什么会出现错误,因为list
没有定义。但是,它是Advanced Calendar Services的示例代码之一,所以我的印象是它可以正常工作。
function draftSendEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Form Responses 1");
var Avals = ss.getRange("A1:A").getValues(); //Status request (pending, etc).
var lastRow = Avals.filter(String).length;
Logger.log(lastRow);
for (var i = 2; i <= lastRow ; i++) {
var approvalStatus = sheet.getRange(i,1).getValue();
var name = sheet.getRange(i,8).getValue();
var description = sheet.getRange(i,9).getValue(); //Description.
var date = sheet.getRange(i,5).getValue(); //Date.
var formattedStart = Utilities.formatDate(new Date(date), 'Europe/London', 'Mmmm dd, yyyy');
var startTime = sheet.getRange(i,6).getValue(); //Event starting time.
var formattedSTime = Utilities.formatDate(new Date(startTime), 'Europe/London','hh:mm');
var endTime = sheet.getRange(i,7).getValue(); //Estimated end time of event.
var formattedETime = Utilities.formatDate(new Date(endTime), 'Europe/London','hh:mm');
var guests = sheet.getRange(i,15,1,10).getValues(); //Event guests by email address.
var staffMember = sheet.getRange(i,10).getValue(); //Meeting with whom, determines Calendar ID (CalId).
var staffEmail = sheet.getRange(i,13).getValue(); //Email address staff member.
var calId = sheet.getRange(i,11).getValue(); //Calendar the meeting goes into.
var booker = sheet.getRange (i,3).getValue(); //The person booking the meeting.
var booEmail = sheet.getRange(i,4).getValue(); //Email booker.
var eventStatus = sheet.getRange(1,1,i,12).getCell(i,12);
var bookNotifyBoo = sheet.getRange(i,14).getValue(); //Booker emailed with confirmation?
//List of calId's events on date.
var events = Calendar.Events.list(calId, {
timeMin: date,
singleEvents: true,
orderBy: 'startTime',
maxResults: 50
});
if (events.items && events.items.length > 0) {
for (var o = 0; o < events.items.length; o++) {
var event = events.items[o];
if (event.start.date) {
// All-day event.
var start = new Date(event.start.date);
Logger.log('%s (%s)', event.summary, start.toLocaleDateString());
} else {
var start = new Date(event.start.dateTime);
Logger.log('%s (%s)', event.summary, start.toLocaleString());
}
}
} else {
Logger.log('No events found.');
}
if (approvalStatus == "Approved" && bookNotifyVol.isBlank()){
MailApp.sendEmail(booEmail,
name + " meeting is booked for " + formattedStart + " " + formattedSTime + " - " + formattedETime,
"Hello " + booker + "," + "\n" + "\n" + "Your request for a " + name + " meeting has been approved by " + staffMember + ". Any other attendees will also be notified." + "\n" + "\n" + "The agenda for this meeting has been recorded as following:" + "\n" + description + "\n" + "\n" + "Wishing you a wonderful day." + "\n" + "\n" + "Kind regards," + "\n" + staffMember,{cc: guests});
sheet.getRange(bookNotifyBoo).setValue("Notified");
}
if (approvalStatus == "Pending" && eventStatus.isBlank()){
MailApp.sendEmail(staffEmail,
"Request for " + name + " meeting on " + formattedStart + " " + formattedSTime + " - " + formattedETime,
"Hello " + staffMember + "," + "\n" + "\n" + volunteer + " has requested a " + name + " meeting on: " + "\n" + formattedStart + ", starting at " + formattedSTime + " and estimated to end around " + formattedETime + "." + "\n" + "\n" + booker + "has given the following reason or agenda for this meeting:" + "\n" + description + "\n" + "\n" + "The following people are also invited to attend this meeting: " + guests + "." + "\n" + "\n" + "Here is a list of the events in the calendar for " + date + ":" + "\n" + start + "\n" + "\n" + "Wishing you a wonderful day.");
}
if (approvalStatus == "Not available" && eventStatus.isBlank()){
MailApp.sendEmail(booEmail,
"Conflict: " + name + " meeting on " + formattedStart + " " + formattedSTime + ", please try a different time",
"Hello " + booker + "," + "\n" + "\n" + "I am not available for a " + name + " meeting on " + formattedStart + " " + formattedSTime + " - " + formattedETime + ". Please try a different time and/or date.");
}
}
}
有什么想法吗?你有什么不同的做法吗?
解决方案
您在这里缺少右括号:) time and/or date.
;
推荐阅读
- mel - 逐个命令地迭代 mel 脚本
- javascript - 当我刷新单页网站时,它不会先显示标题
- javascript - JavaScript 对象多重排序
- javascript - 单选按钮拦截 Angular/Javascript 中的未选中事件
- java - 如何在 Spring 验证器中拒绝 List 中的无效值?
- regex - Sed - 删除表达式需要花括号,而不是替代表达式
- reactjs - 如何将键添加到您在 React 中呈现的数组
- java - Rest Easy Multipart Form 数据获取多个文件的文件长度
- excel - Google 表格 - 一个单元格中的多个 IF、ISNUMBER、SEARCH 语句
- android - 将字节数组转换为矢量可绘制对象