我无法让这个工作,我迷路了,我搜索并搜索了一个答案,我无法看到导致此失败的原因,我从电子表格中提取数据并尝试将其作为事件添加到Google日历- getcal()事件冻结,说无法找到方法createalldayevent(string,string)-line71
我已将代码修改为此但仍然......
\\function to get required information from sheets
and set as script properties to use in later functions//
function getsheet(getsheet){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("Calendar Data");
var sheet2 = ss.getSheetByName("call form");
var sheet3 = ss.getSheetByName("Job Summary Sheet");
var getval = sheet2.getRange("A1:A").getValues();
var getlast = getval.filter(String).length;
var finval = sheet2.getRange(getlast, 1).getValues().toString();
var finval2 = sheet1.getRange(getlast, 2).getValues().toString();
var finval3 = sheet1.getRange(getlast, 5).getValues().toString();
var finval4 = sheet3.getRange(getlast, 6).getValues().toString();
var finval5 = sheet3.getRange(getlast, 12).getValues().toString();
var title = finval + '-' + finval4 ;
var startTime = finval3;
var endTime = finval3;
var location = finval2;
var description = finval5;
PropertiesService.getScriptProperties().setProperty('title', title);
PropertiesService.getScriptProperties().setProperty('startTime', startTime);
PropertiesService.getScriptProperties().setProperty('endTime', endTime);
PropertiesService.getScriptProperties().setProperty('location', location);
PropertiesService.getScriptProperties().setProperty('description', description);
Logger.log(title);
Logger.log(startTime);
Logger.log(endTime);
Logger.log(location);
Logger.log(startTime);
Logger.log(description);
}
\\\\function getsheet() works correctly-
--gets last row of each required sheet and sets information as script properties////
function getcal2(){
getsheet();
var title = PropertiesService.getScriptProperties().getProperty('title');
var Date = PropertiesService.getScriptProperties().getProperty('startTime');
var endTime = PropertiesService.getScriptProperties().getProperty('endTime');
var location = PropertiesService.getScriptProperties().getProperty('location');
var description = PropertiesService.getScriptProperties().getProperty('description');
////freezes at event2/////
var event = CalendarApp.getCalendarById('xxxxxo@group.calendar.google.com');
var event2 =event.createAllDayEvent(title,Date
);
Logger.log('Event ID: ' + event.getId());
Logger.log(title);
Logger.log(startTime);
Logger.log(endTime);
Logger.log(location);
Logger.log(startTime);
Logger.log(description);
}
\\\fails at event2-cannot find method-i am new to this
但你的帮助确实给了很多理解......我很感激!////
答案 0 :(得分:0)
在第3行,当变量title
和startTime
为undefined
时,您调用方法createAllDayEvent(),只需移动第3行(您在其中定义{{ 1}})在带有这些参数的行var event
或call your function getsheet()之后。
修改强>
您正在使用方法createAllDayEvent(title, date),它收到的两个参数是:
var description = finval5
必须是String,因此请确保您从电子表格中获取的值是字符串。title
为Date object,因此请确保电子表格中的值采用有效的日期格式,如果编辑单元格,则必须查看日历,如果没有进入菜单格式>数字>日期 Google表格根据单元格的值存储数据,值可以是date
,Number
,Boolean
或Date
类型(空单元格将返回一个空字符串)。当脚本使用这些值时,Apps脚本会将它们视为JavaScript中的相应数据类型。
编辑2:
正如我上面提到的,方法createAllDayEvent(title, date)在第二个参数中收到Date object,现在您使用PropertiesService来存储日期值,但此服务将值存储为字符串,所以现在在使用日期创建事件之前,需要将其转换为Date对象,如下所示:
String
答案 1 :(得分:0)
它可能采用您的格式。
尝试使用此代码段进行测试:
function setValues() {
var values = {};
values['title'] = 'Lunch Meeting';
values['description'] = 'Lunch Meeting';
return values;
}
function addEvent(){
var data = setValues();
var calendarID = 'primary';
var calendar = CalendarApp.getCalendarById(calendarID)
var event = calendar.createAllDayEvent(data.title,
new Date('August 22, 2016'),
{description: data.title});
Logger.log(data);
}
我使用primary
作为测试日历ID。然后使用setValues()
来形成日历事件的详细信息(您可以使用工作表获取值,然后将其分配给var值)。请查看createAllDayEvent(title, date, options)
和google apps script calendar sample的文档,了解一些代码实现和正确的代码格式。
希望它有所帮助!
答案 2 :(得分:0)
谢谢你们 - 问题解决了! 两个问题 - 1 - 虽然起初我有正确的格式,我没有把“日期”称为[日期], 2-i没有为add事件调用任何函数,只是变量。 固定- 将“日期”转换为[日期] 将事件2删除为变量并将其称为“事件”创建事件() 并单独运行
function run(){
getsheet();
getcal2();
}