我正在编写一个Google应用脚本,根据以下内容更新Google日历:a)事件是否指定了日期(“date”列!=“”),以及 b)事件是否已经过帐到日历(“日历”栏中的“”“列)。将事件添加到日历后,我想在电子表格中的列中添加“是”(“在日历中”列)。
我查看了整个网络上的各种帖子(主要是http://blog.ouseful.info/2010/03/07/maintaining-a-google-calendar-from-a-goole-spreadsheet-reprise/和http://blog.ouseful.info/2010/03/04/maintaining-google-calendars-from-a-google-spreadsheet/),并找出了以下脚本:
var IN_CAL = "Yes";
function caltest() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var data = sheet.getDataRange().getValues(); // Process any rows with data
var cal = CalendarApp.getCalendarsByName("Oil and Gas Test 5")[0];
for (i in data) {
var row = data[i];
var state = row[2] // 3rd column, column with state
var desc = row[5]; // 6th column, column with lease description
var date = row[4]; // 5th column, column with date
var title = state+": "+desc;
var inCalendar = row[1]; // 2nd column, tells whether in calendar or not
if ((inCalendar != IN_CAL)&&(date !== " " )) { // Prevents adding duplicates to calendar
cal.createAllDayEvent(title, new Date(date))
var v = parseInt(i)+1;
sheet.getRange(v, 2, 1).setValue(IN_CAL);
SpreadsheetApp.flush(); // Makes sure the cell is updated right away in case the script is interrupted
}
}
}
该脚本可以正常工作,只是它向“日历”列中的所有单元格添加“是”,无论“日期”列中是否有日期。我的电子表格中的日期单元格被格式化为日期,因此我理解if语句总是评估为true,因为它正在查找永远不会存在的字符串。我怎么写:
if ((inCalendar != IN_CAL)&&(date !== " " ))
仅当格式化为日期的日期单元格为空时才回答true?
答案 0 :(得分:0)
看起来你在测试空的引号之间有一个空格。如果这是真的,你实际测试的是不等于空格,这与测试空是不同。
if ((inCalendar != IN_CAL)&&(date !== " " ))
应该是:
if ((inCalendar != IN_CAL)&&(date !== "" ))
没有最后一组引号之间的空格。