javascript - 谷歌脚本 API 日历/谷歌表格;如何将日历导出到带有来宾(姓名,电子邮件)的谷歌表格
问题描述
使用此类代码将谷歌日历提取到工作表(代码已从此处的其他来源实现:
function cal_to_gsht(){
var ss = SpreadsheetApp.openById( ' id_gsheet ' ), // Id is set to file 'CAL-to-gsheets' in LPRMF dir
sheet = ss.getActiveSheet(),
cals = [' cal1 ', ' cal2 '], c, cal, calName,
//?? cals = getAllCalendars(),
today = new Date(),
start = new Date( today ), end = new Date( 'Dec 31, 2019' ),
events, i, details,
eventslog = [], e,
rows = [], range;
for (c = 0; c < cals.length; c += 1) {
cal = CalendarApp.getCalendarById(cals[c]);
calName = cal.getTitle();
events = cal.getEvents(start, end);
// add the events of the current calendar to the array of all events
eventslog = eventslog.concat(
events.map(function(event) {
return {
time: new Date(event.getStartTime()).getTime(), // sort by this
details: [
calName, // calNAme-change calendar info position in array to adjust
event.getTitle(),
event.getDescription(),
event.getLocation(),
event.getStartTime(),
event.getEndTime(),
event.addGuest()
// event.getGuestList()
// event.getGuestByEmail(0)
]
};
})
);
}
// sort array of event so date order can be either way by reversing a & b
eventslog.sort(function(a, b) { return a.time - b.time; });
rows = eventslog.map(function(entry) { return entry.details; });
range = sheet.getRange(2, 1, rows.length, 7); // no. of event.details ; increase if more event.get
range.setValues(rows);
}
如何添加到事件。另一条记录,即客人姓名和/或电子邮件。
请指教,
之后......厌倦了通过getEmail()提取电子邮件,但没有成功:
function(event) {
var guestList=event.getGuestList();
var email1=guestList[0]; // how to get EMAIL out of it !
var email2=guestList[1];
return {
time: new Date(event.getStartTime()).getTime(),
details: [
calName,
event.getTitle(),
event.getDescription(),
event.getLocation(),
event.getStartTime(),
event.getEndTime(),
email1,
email2
]
};
})
getEmail() 如何工作?
解决方案
找到解决方案,需要很少的高级方法来处理数组,映射它们并再次加入两个:
function(event) {
return {
time: new Date(event.getStartTime()).getTime(),
details: [
calName,
event.getTitle(),
event.getDescription(),
event.getLocation(),
event.getStartTime(),
event.getEndTime(),
event.getGuestList().map(function(x) {return x.getEmail();}).join(',')
]
};
推荐阅读
- ios - 如何通过 Appstore 或使用任何其他媒介将 iOS 产品应用程序分发给多个客户?
- babeljs - 如何配置 babel/preset-env 以包含 core-js URLSearchParams polyfill?
- angular - 使用 Angular 7 中的打字稿找到与数组中的条件匹配的最少一个元素
- macos - 终端从不加载
- excel-formula - Excel 在 SciPy 中的 TDIST
- optaplanner - 为什么构建启发式的分数计算速度比本地搜索快?
- android - 自定义键盘
- php - 如何发布带有条件的禁用/只读输入字段?
- c# - CsvHelper 和不可变类型
- apache-spark - 使用 Spark 源提供的 Dockerfile 为 Spark 构建 Kubernetes Docker 容器时出现问题