2015-08-13 4 views
0

У меня есть ниже форма ...Google Sheets: Тяговая строка, основанная на дате

Form

Это печатает ответы из следующей таблицы

Sheet

У меня есть этот текущий сценарий который берет строки и печатает их все в документе google:

function saveAsDOC() { 
    var fileName = "Announcements Test File"; 
    var doc = DocumentApp.create(fileName); 
    SpreadsheetApp.getActiveSpreadsheet().toast('Generating file..', 'Status', 3); 

    // Get the range in the spreadsheet 
    var ws = SpreadsheetApp.getActiveSpreadsheet().getDataRange(); 
    try { 
    var data = ws.getValues(); 

    // Print the annoucements in a loop 
    if (data.length > 1) { 
     for (var row = 1; row < data.length; row++) { 
     if(new Date(data[row][2]) <= new Date()) { 
      for (var col = 1; col < data[row].length; col++) { 
      if(data[row][col]!=""){ 
       doc.appendParagraph(data[row][col]); 
       doc.appendParagraph("") 
      } 
      } 
     } 
     } 
    } 
    } 

    catch(err) { 
    Logger.log(err); 
    Browser.msgBox(err); 
    } 
} 

Я хотел был бы изменить этот скрипт так, чтобы он печатал только строки, где «Дата начала» сегодня & в следующие дни до «Дата окончания». Существует ничего в Интернете, что я нашел, чтобы помочь мне, поэтому я приехал сюда.

Редактировать: Обновление с ответом.

ответ

2

новый Date() предоставит объект даты «сейчас». Тогда простое сравнение будет делать работу:

if(new Date(data[row][2]) > new Date() || new Date(data[row][3]) > new Date()) 

Я не был уверен, что вы имели в виду, но это: если STARTDATE в будущем или ENDDATE в будущем.

Полный код

function saveAsDOC() { 
    // Prompts the user for the file name 
    var fileName = "TEMP weggooien"; 
    var doc = DocumentApp.create(fileName); 

    // Get the range in the spreadsheet 
    var ws = SpreadsheetApp.getActiveSpreadsheet().getDataRange(); 
    try { 
    var data = ws.getValues(); 

    // Loop through the data in the range and create paragraphs with the appropriate heading 
    if (data.length > 1) { 
     for (var row = 1; row < data.length; row++) { 
     if(new Date(data[row][2]) > new Date() || new Date(data[row][3]) > new Date()) { 
      for (var col = 1; col < data[row].length; col++) { 
      if(data[row][col]!=""){ 
       doc.appendParagraph(data[row][col]); 
      } 
      } 
     } 
     } 
    } 
    } 
    catch(err) { 
    Logger.log(err); 
    Browser.msgBox(err); 
    } 
} 
+0

Это дает мне: 'TypeError: Не удается прочитать свойство "2" от undefined.' – tda

+0

А жаль, это должно быть: если (новая дата (данные [строка] [ 2])> new Date() || new Date (data [row] [3])> new Date()) –

+0

По-прежнему получает ту же ошибку. – tda