2017-07-18 63 views
1

我試圖做一個函數來查看一個日期列表(一年的學校日曆),並與用戶提示中的日期進行比較,並且直到日期(所有日期「低於」用戶日)在B列中設置一個字符串(在這種情況下,「暑假」,只有如果有沒有相應的單元格在B列中的另一價值電子表格和數組之間的日期操作

我有什麼:this is the table as seen before action

我所期望的,如果我在9月12日設置輸入:enter image description here

function setTrimesters() { 
    var sheet = 
SpreadsheetApp.getActive().getSheetByName("calendar2017"); 

    // Start of 1st trimester 
    var input = ui.prompt("Set first day of trimester (DD/MM)"); 
    var value = input.getResponseText(); 

    var allStartEndTrimesters = [valorInici1rTri] 

    // Get dataRange 
    var dataRange = sheet.getRange('A1:B'+sheet.getLastRow()); 

    // Get dataRange values 
    var data = dataRange.getDisplayValues(); 

    for (var i = 0 ; i < data.length ; i++) {  
    if (data[i][0] < value) { 
     if (data[i][1] == '') { 
     data[i][1] = "Summer holidays"; 
     } 
    } 
    } 
    dataRange.setValues(data);  
} 

該腳本正在工作只有值的日期。然後,在10月份,從1日到11日,腳本也分配值「暑假」。

我不知道如何得到日期比較前的月份值。我試着將NumberFormat設置爲毫秒或幾天(類似於42895左右)...但SpreadsheetApp和App腳本使用日期有一些限制。

預先感謝幫助

回答

2

的問題是,你有時間存在字符串工作,因此他們在字典順序得到比較。隨着第一天,4月9日在5/7之前,這不是你想要的。我建議

  • 使用getValues而不是getDisplayValues。它將檢索JavaScript日期對象而不是字符串。然後比較<工作正常,但您還需要開始日期爲Date對象:請參見下文。
  • 請勿覆蓋A列中的輸入數據。單獨的輸入和輸出範圍。

下面是一個例子,取下用戶接口部分:

function testSummer() { 
    var sheet = SpreadsheetApp.getActiveSheet();  
    var userEnteredDate = "26/07"; // what you get from user 
    var dateParts = userEnteredDate.split("/"); 
    var beginning = new Date(); 
    beginning.setMonth(dateParts[1] - 1, dateParts[0]); 
    beginning.setHours(0, 0, 0, 0); // so it's 0 hour of the day entered, in the current year 

    var inputData = sheet.getRange('A1:A'+sheet.getLastRow()).getValues(); 
    var outputRange = sheet.getRange('B1:B'+sheet.getLastRow()); 
    var outputData = outputRange.getValues(); 

    for (var i = 0; i < inputData.length; i++) { 
    if (inputData[i][0] < beginning && outputData[i][0] == "") { 
     outputData[i][0] = "summer vacation"; 
    } 
    } 
    outputRange.setValues(outputData); // not overwriting input 
} 
+0

感謝您的幫助,我在整合結構我你的解決方案,如果它的正確工作,我稍後會發佈一個答案分享。再次感謝! – estemon

相關問題