我正在尝试做什么:如果在事件“#notes”的标题或说明中找到以下字符串,我正在尝试解析Google日历事件并创建Google文档
实际发生的事情:一旦找到字符串“notes”,就会创建一个文档。它不需要标签。 @发生同样的事情。
function createMeetingNotesNextTimePeriod() {
//<-------------------------------------VARIABLES
// get today's date
var today = new Date();
// number of hours from now to check for meetings
var hours = 2
// create variable for now
var now = new Date();
// create variable for number of hours from now in milliseconds
var period_from_now = new Date(now.getTime() + (hours * 60 * 60 * 1000));
// retrieve all calendar events for time period with @notes string
var tagword = ('#notes');
var events = CalendarApp.getDefaultCalendar().getEvents(now, period_from_now, {search: tagword}) ;
Logger.log('Number of events: ' + events.length);
} // functionCreateMeetingNotesNextTimePeriod
log命令告诉我它发现了一个事件,但是有问题的事件在它的标题中没有'notes',没有#标签。感谢您的帮助。
修改 我想我发现了问题,但我仍然难以解决问题。似乎.getEvents中的搜索选项会忽略大多数特殊字符,并在您搜索特殊字符时返回正数。例如,我用以下内容替换了原始搜索标记:
var events = CalendarApp.getDefaultCalendar().getEvents(now, period_from_now, {search: 'notes' + '@' +'#' + '±' }) ;
在我的搜索中,它给了我一个积极的匹配,而我的事件中没有'@','#'或'±'。
答案 0 :(得分:2)
它似乎很奇怪,它忽略了特殊字符,但是这是一个可行的解决方法:
var tagword = '#notes';
var events = CalendarApp.getDefaultCalendar().getEvents(now, period_from_now, {search : tagword})
if (events.length > 0) {
for (i in events) {
if ( events[i].getTitle().indexOf(tagword) >-1 || events[i].getDescription().indexOf(tagword) >-1) {
//do something
}
}
}
基本上它会找到所有带有音符的事件(忽略特殊字符)然后遍历事件标题和描述以检查标记字是否存在(包括特殊字符)。
答案 1 :(得分:0)
您需要使用一些正则表达式来执行您在Javascript中尝试执行的操作。
我不确定如何针对您的具体案例进行此操作,但这里有两个可以帮助您的参考资料。
JS Regex Searching for HashTags
我希望这有帮助!
修改强>
试
var tagword = ('/#/g' + notes);
OR
var tagword = ('/#notes/g');
我试了一下它似乎有效。