[英]GAS: Create calendar event from spreadsheet
我在電子表格中有以下列:
首字母 | 名稱 | Position | 主題 | 23 年 2 月 19 日 | 22.02.23 | 28.02.23 | |
---|---|---|---|---|---|---|---|
ab@gmail.com | 迭戈 | 弗洛雷斯 | AB | C | 1個 | ||
bc@gmail.com | 亞歷克斯 | 弗洛雷斯 | D B | F | 1個 | ||
c.d@gmail.com | 迭戈 | 桑切斯 | 國標 | 丁 | 1個 | ||
de@gmail.com | 亞歷克斯 | 桑切斯 | 面子書 | G | 1個 |
該電子表格與以下谷歌應用程序腳本鏈接:
function createCalendarEvents() {
var spreadsheetId = '1NQULPeaxoaAaNWU4ojapb4R50JEdl62Ip2e9yjUB_sw';
var calendarId = "diego.flores@gmail.com";
var sheetName = '2';
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
var sheet = spreadsheet.getSheetByName(sheetName);
var calendar = CalendarApp.getCalendarById(calendarId);
var data = sheet.getDataRange().getValues();
var headers = data.shift();
// console.log("spreadsheet: "+spreadsheet);
// console.log("sheet: "+sheet);
// console.log("calendar: "+calendar);
// console.log("headers: "+headers);
// console.log("data: "+data);
console.log("email: "+email);
for (var i = 0; i < data.length; i++) {
var row = data[i];
var email = row[0];
var firstName = row[1];
var lastName = row[2];
var position = row[3];
var topic = row[4];
console.log("email: "+email);
for (var j = 5; j < row.length; j++) {
if (row[j] === '1') {
var date = new Date(headers[j]);
var eventTitle = firstName + " " + lastName + " - " + position + " - " + topic;
var event = calendar.createEvent(eventTitle, date, date);
event.setLocation("Office");
event.addEmailReminder(15);
}
}
}
}
當日期列中的列包含 1 時,腳本應創建一個事件,其中填充日歷 diego.flores@gmail.com 中行的信息。 但是它不起作用,沒有創建日歷條目。 我 100% 確定我擁有日歷的授權並且腳本已連接到正確的工作表。 日歷和電子表格 API 已激活。 也許有人可以給我提示或提示。 謝謝!
從您的回復和腳本中,
我認為在你的腳本中, if (row[j] === '1') {
應該是if (row[j] === 1) {
當row[j]
是一個數字時,或者if (row[j] == '1') {
.
No calendar event is created by executing the script
的原因可能是由於此。 根據您的示例數據,我不確定您的 header 標題中的19.02.23
、 22.02.23
和28.02.23
的日期是否為日期 object。
從上面的情況來看,下面的修改怎么樣?
if (row[j] === '1') {
var date = new Date(headers[j]);
var eventTitle = firstName + " " + lastName + " - " + position + " - " + topic;
var event = calendar.createEvent(eventTitle, date, date);
event.setLocation("Office");
event.addEmailReminder(15);
}
if (row[j] == "1") {
var date = headers[j] instanceof Date ? headers[j] : Utilities.parseDate(headers[j], Session.getScriptTimeZone(), "dd.MM.yy");
var eventTitle = firstName + " " + lastName + " - " + position + " - " + topic;
var event = calendar.createEvent(eventTitle, date, date);
event.setLocation("Office");
event.addEmailReminder(15);
}
19.02.23
、 22.02.23
和28.02.23
的日期是日期 object,則var date = headers[j];
可以用來代替{var date = headers[j] instanceof Date? headers[j]: Utilities.parseDate(headers[j], Session.getScriptTimeZone(), "dd.MM.yyyy");
{var date = headers[j] instanceof Date? headers[j]: Utilities.parseDate(headers[j], Session.getScriptTimeZone(), "dd.MM.yyyy");
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.