Google apps script 在Google工作表中插入日历ID
我正在尝试使用找到的代码将事件从google sheet导出到google calender 我已将其更新以适合我的工作表,但库存代码将单元格中的公式替换为该值,使工作表变得无用。我试着换掉最后一行Google apps script 在Google工作表中插入日历ID,google-apps-script,google-sheets,google-calendar-api,Google Apps Script,Google Sheets,Google Calendar Api,我正在尝试使用找到的代码将事件从google sheet导出到google calender 我已将其更新以适合我的工作表,但库存代码将单元格中的公式替换为该值,使工作表变得无用。我试着换掉最后一行 range.setValues(data); 与 但这只会让所有的单元格变成空白 是否可以使用.setValues来设置Id 我的代码中有一部分忘记添加它了 function onOpen() { var sheet = SpreadsheetApp.getActiveSpreadsheet
range.setValues(data);
与
但这只会让所有的单元格变成空白
是否可以使用.setValues来设置Id
我的代码中有一部分忘记添加它了
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "Export Events",
functionName : "exportEvents"
}];
sheet.addMenu("Calendar Actions", entries);
};
/**
* Export events from spreadsheet to calendar
*/
function exportEvents() {
var sheet = SpreadsheetApp.getActiveSheet();
var headerRows = 1; // Number of rows of header info (to skip)
var range = sheet.getDataRange();
var data = range.getValues();
var calId = "abeaqo4gf3of7u64sa8uufulpc@group.calendar.google.com";
var cal = CalendarApp.getCalendarById(calId);
for (i in data) {
if (i < headerRows) continue; // Skip header row(s)
var row = data[i];
var date = new Date(row[21]); // First column
var title = row[22]; // Second column
var tstart = new Date(row[23]);
tstart.setDate(date.getDate());
tstart.setMonth(date.getMonth());
tstart.setYear(date.getYear());
var tstop = new Date(row[24]);
tstop.setDate(date.getDate());
tstop.setMonth(date.getMonth());
tstop.setYear(date.getYear());
var loc = row[25];
var desc = row[26];
var id = row[27]; // Sixth column == eventId
var tep = row[28];
if (i > tep) continue;
// Check if event already exists, update it if it does
try {
var event = cal.getEventSeriesById(id);
}
catch (e) {
// do nothing - we just want to avoid the exception when event doesn't exist
}
if (!event) {
//cal.createEvent(title, new Date("March 3, 2010 08:00:00"), new Date("March 3, 2010 09:00:00"), {description:desc,location:loc});
var newEvent = cal.createEvent(title, tstart, tstop, {description:desc,location:loc}).getId();
row[27] = newEvent; // Update the data array with event ID
}
else {
event.setTitle(title);
event.setDescription(desc);
event.setLocation(loc);
// event.setTime(tstart, tstop); // cannot setTime on eventSeries.
// ... but we CAN set recurrence!
var recurrence = CalendarApp.newRecurrence().addDailyRule().times(1);
event.setRecurrence(recurrence, tstart, tstop);
}
debugger;
}
// Record all event IDs to spreadsheet
}
不必设置for循环之外的所有数据,您可以使用range获取要更新事件id的特定单元格,并将值设置为每行中的该单元格 这是代码。您只需相应地更改行和列值:
function exportEvents() {
var sheet = SpreadsheetApp.getActiveSheet();
var headerRows = 1; // Number of rows of header info (to skip)
var range = sheet.getDataRange();
Logger.log(range.getLastRow());
var data = range.getValues();
Logger.log(data);
var calId = "your calendar id";
var cal = CalendarApp.getCalendarById(calId);
for (i in data) {
if (i < headerRows) continue; // Skip header row(s)
var row = data[i];
var date = new Date(row[0]); // First column
var title = row[1]; // Second column
var tstart = new Date(row[2]);
tstart.setDate(date.getDate());
tstart.setMonth(date.getMonth());
tstart.setYear(date.getYear());
var tstop = new Date(row[3]);
tstop.setDate(date.getDate());
tstop.setMonth(date.getMonth());
tstop.setYear(date.getYear());
var loc = row[4];
var desc = row[5];
var id = row[6]; // Sixth column == eventId
// Check if event already exists, update it if it does
var event = cal.getEventSeriesById(id);
//Logger.log(id);
range = SpreadsheetApp.getActiveSheet().getRange(i, 6);
if (!event) {
var newEvent = cal.createEvent(title, tstart, tstop,{description:desc,location:loc}).getId();
//row[6] = newEvent; // Update the data array with event ID
range.setValue(newEvent);
}
else {
event.setTitle(title);
event.setDescription(desc);
event.setLocation(loc);
// event.setTime(tstart, tstop); // cannot setTime on eventSeries.
// ... but we CAN set recurrence!
var recurrence = CalendarApp.newRecurrence().addDailyRule().times(1);
event.setRecurrence(recurrence, tstart, tstop);
range.setValue(event.getId());
}
//sheet.getRange(i,6).setValue(newEvent);
}
}
function exportEvents() {
var sheet = SpreadsheetApp.getActiveSheet();
var headerRows = 1; // Number of rows of header info (to skip)
var range = sheet.getDataRange();
Logger.log(range.getLastRow());
var data = range.getValues();
Logger.log(data);
var calId = "your calendar id";
var cal = CalendarApp.getCalendarById(calId);
for (i in data) {
if (i < headerRows) continue; // Skip header row(s)
var row = data[i];
var date = new Date(row[0]); // First column
var title = row[1]; // Second column
var tstart = new Date(row[2]);
tstart.setDate(date.getDate());
tstart.setMonth(date.getMonth());
tstart.setYear(date.getYear());
var tstop = new Date(row[3]);
tstop.setDate(date.getDate());
tstop.setMonth(date.getMonth());
tstop.setYear(date.getYear());
var loc = row[4];
var desc = row[5];
var id = row[6]; // Sixth column == eventId
// Check if event already exists, update it if it does
var event = cal.getEventSeriesById(id);
//Logger.log(id);
range = SpreadsheetApp.getActiveSheet().getRange(i, 6);
if (!event) {
var newEvent = cal.createEvent(title, tstart, tstop,{description:desc,location:loc}).getId();
//row[6] = newEvent; // Update the data array with event ID
range.setValue(newEvent);
}
else {
event.setTitle(title);
event.setDescription(desc);
event.setLocation(loc);
// event.setTime(tstart, tstop); // cannot setTime on eventSeries.
// ... but we CAN set recurrence!
var recurrence = CalendarApp.newRecurrence().addDailyRule().times(1);
event.setRecurrence(recurrence, tstart, tstop);
range.setValue(event.getId());
}
//sheet.getRange(i,6).setValue(newEvent);
}
}