google-apps-script - 谷歌脚本中的多个日历 ID
问题描述
编程新手,在尝试将多个日历 ID 添加到下面的脚本时,我一直在碰壁。我需要它来遍历行,如果该事件尚未添加到日历中,请将其添加到我的日历和其他人的日历中,因为工作表得到更新。
function addToCal() {
var ss = SpreadsheetApp.getActiveSpreadsheet(),
sheet = ss.getSheetByName("ProductionSchedule"),
range = sheet.getActiveRange(),
row = range.getRow(),
data = sheet.getRange(row, 1, 1, 26).getValues(),
date = data[0][6];
if (date =='') return;
var today = new Date(),
startDate = new Date(today.setMonth(today.getMonth()-1)),
endDate = new Date(today.setMonth(today.getMonth()+6)),
calId = 'calendarID',
cal = CalendarApp.getCalendarById(calId),
events = cal.getEvents(startDate, endDate),
titles = [];
for (var i = 0, len = events.length; i < len; i++)
titles.push(events[i].getTitle());
var item = ('Produção de' + ' ' + data[0][3]),
qtd = ('Qtd (und): ' + data[0][5]),
local = ('Local de Produção: ' + data[0][4]);
var index = titles.indexOf(item),
ok = 1;
if (index > -1)
{
var eventDate = events[index].getAllDayStartDate();
if (eventDate.getTime() == date.getTime()) var ok = 0;
else events[index].deleteEvent();
}
if (ok)
cal.createAllDayEvent(item, date, {description: qtd, location: local})
.removeAllReminders();
}
目前,它将事件设置为我的日历,其中包含项目描述作为事件标题、产品名称、数量和描述字段中的生产位置。我需要将相同的信息添加到其他人的日历中。
此外,这不能将我标记为忙碌,并且该活动不需要是全天活动。
任何帮助表示赞赏。干杯,
解决方案
为了重复多个日历的日历交互,您需要创建一组日历 ID 并循环遍历它们。
一种方法是:
var CALENDER_IDS = [
"calendarID1",
"calendarID2",
"calendarID3",
]
func addToCal() {
... spreadsheet data extraction and date calculations ...
for (var i = 0, clen = CALENDER_IDS.length; i < clen; i++) {
var cal = CalendarApp.getCalendarById(CALENDER_IDS[i]);
... calendar interactions ...
}
}
如果您使用上面的代码,请确保更新标题循环中的计数器变量(即它们都不能i
)。常见的做法是让内部循环使用j
,k
等。
推荐阅读
- haskell - Haskell / Conduit:逐行读取文件
- python - subprocess.check_output() 中的 stderr=subprocess.STDOUT 有什么用?
- r - 如何从成对相关data.frame中获取相关矩阵?
- python - 来自 Django 的开发服务器端口绑定错误的 ptvsd 远程调试
- r - 如何在 R Studio 中从数据表中绘制选定的行
- python - 使用 sshtunnel 模块的 SSH 隧道不允许空密码
- grails - 如何更改 grails 项目中的 URL?
- javascript - 试图避免在ajaxcall之后滚动条返回开始
- r - 优化例程在自动编码器包中的自动编码功能中给出错误
- c# - 将 Office 互操作图像附件转换为 OpenXML