如果只在格式化为日期的日期单元格为空时,如何写if语句才能回答为真?

时间:2015-03-25 02:07:04

标签: google-apps-script google-sheets

我正在编写一个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?

1 个答案:

答案 0 :(得分:0)

看起来你在测试空的引号之间有一个空格。如果这是真的,你实际测试的是不等于空格,这与测试空是不同。

if ((inCalendar != IN_CAL)&&(date !== " " ))

应该是:

if ((inCalendar != IN_CAL)&&(date !== "" ))

没有最后一组引号之间的空格。