Javascript 从google表单发布到google日历的脚本。卡在授权循环中
我对谷歌应用程序脚本完全陌生,试图编写一个简单的脚本,当从表单中添加新行时,它将从谷歌电子表格中提取信息,并使用该信息创建新的日历事件。以下是我到目前为止所做的(日历和电子表格ID已删除)Javascript 从google表单发布到google日历的脚本。卡在授权循环中,javascript,google-apps-script,Javascript,Google Apps Script,我对谷歌应用程序脚本完全陌生,试图编写一个简单的脚本,当从表单中添加新行时,它将从谷歌电子表格中提取信息,并使用该信息创建新的日历事件。以下是我到目前为止所做的(日历和电子表格ID已删除) 当我运行代码时,我被要求在循环中反复授权应用程序。触发器设置为在表单提交时从电子表格运行函数。我认为问题可能与我如何调用电子表格,然后将其设置为活动状态有关,但我试图直接从文档中复制该代码。另一个问题可能是格式化日期,因为这一部分也很混乱(对js来说相对较新) 当您从电子表格中检索日期时,它们已经是JavaS
当我运行代码时,我被要求在循环中反复授权应用程序。触发器设置为在表单提交时从电子表格运行函数。我认为问题可能与我如何调用电子表格,然后将其设置为活动状态有关,但我试图直接从文档中复制该代码。另一个问题可能是格式化日期,因为这一部分也很混乱(对js来说相对较新) 当您从电子表格中检索日期时,它们已经是JavaScript日期对象,您可以使用它来获取所需的内容,请参见下面的示例代码 此外,无需激活电子表格即可使用,
openById
就足够了
function addToCalendar() {
//Get the spreadsheet by its id, set it as active, then select the last row to always have the most recent
var spreadSheet = SpreadsheetApp.openById("SS ID");
var sheet = spreadSheet.getSheets()[0];// 0 for first sheet, 1 for second ...
var row = sheet.getLastRow();
//Declare variables for the required text fields and set them equal to corresponding cell values
var name = sheet.getRange(row, 2).getValue();
var subject = sheet.getRange(row, 3).getValue();
var date = sheet.getRange(row, 4).getValue();
var startTime = sheet.getRange(row, 5).getValue();
var endTime = sheet.getRange(row, 6).getValue();
var year = date.getFullYear();
var month = date.getMonth()-1;
var day = date.getDate();
var startTime = new Date(sheet.getRange(row, 5).getValue().setFullYear(year,month,day));// keep hours and minutes but set day and month
var endTime = new Date(sheet.getRange(row, 6).getValue().setFullYear(year,month,day));// keep hours and minutes but set day and month
Logger.log('start : '+startTime+' - end : '+endTime);
//Call the calendar and add the event (uncomment below when you have filled with your own calendar data)
// var calendar = CalendarApp.getCalendarById('CALENDAR ID');
// var event = calendar.createEvent(name, startTime,endTime);
// Logger.log('Event ID: ' + event.getId());
}
function addToCalendar() {
//Get the spreadsheet by its id, set it as active, then select the last row to always have the most recent
var spreadSheet = SpreadsheetApp.openById("SS ID");
var sheet = spreadSheet.getSheets()[0];// 0 for first sheet, 1 for second ...
var row = sheet.getLastRow();
//Declare variables for the required text fields and set them equal to corresponding cell values
var name = sheet.getRange(row, 2).getValue();
var subject = sheet.getRange(row, 3).getValue();
var date = sheet.getRange(row, 4).getValue();
var startTime = sheet.getRange(row, 5).getValue();
var endTime = sheet.getRange(row, 6).getValue();
var year = date.getFullYear();
var month = date.getMonth()-1;
var day = date.getDate();
var startTime = new Date(sheet.getRange(row, 5).getValue().setFullYear(year,month,day));// keep hours and minutes but set day and month
var endTime = new Date(sheet.getRange(row, 6).getValue().setFullYear(year,month,day));// keep hours and minutes but set day and month
Logger.log('start : '+startTime+' - end : '+endTime);
//Call the calendar and add the event (uncomment below when you have filled with your own calendar data)
// var calendar = CalendarApp.getCalendarById('CALENDAR ID');
// var event = calendar.createEvent(name, startTime,endTime);
// Logger.log('Event ID: ' + event.getId());
}