2015-06-29 116 views
0

我有一個谷歌表單,它將響應返回到名爲「表單響應1」的谷歌電子表格,其列A是時間戳(這顯示爲'25/06/2015 21 :36:00'在谷歌電子表格單元格)和列G和我包含數值,我對最後一行感興趣的不是「」值。在G和I兩列中沒有「」值的最後一行可能不是完全相同的行。 1)有沒有一種方法不重新定義「var lastRow = spreadsheet.getSheetByName(」Form responses 1「)。getLastRow();」在第11行?我發現這行是重置var lastRow的定義所必需的。來自Google表單的時間戳返回NaN和getTime()

如果沒有它,列I中沒有「」值的最後一行會出錯(從列G的最後一行移動到非最後一行,而不是從最後一行開始向上計數)第一列)。

2)我爲LastNeroZeroDate獲取NaN,用於列G和I,我試圖用getTime()函數以毫秒爲單位檢索它們。我該如何補救?

如果我在msg框中檢索到「new Date('responsesvalues [lastRow - 1] [0]')getTime()」的值,它會給我「Thu Jun 25 2015 21:35:59 GMT +0800(HKT)「。

在此先感謝您的幫助。

// get the data range 
var lastRow = spreadsheet.getSheetByName("Form responses 1").getLastRow(); 
var responsesvalues = spreadsheet.getSheetByName("Form responses 1").getRange("A1:Q" + lastRow).getValues(); 

// get the last row in column G with non-zero value and corresponding date 
for (; responsesvalues[lastRow - 1][6] == "" && lastRow > 0; lastRow--) {} 
var GLastNonZero = responsesvalues[lastRow - 1][6]; 
var GLastNonZeroDate = new Date('responsesvalues[lastRow - 1][0]').getTime(); 

// get the last row in column I with non-zero value and corresponding date 
var lastRow = spreadsheet.getSheetByName("Form responses 1").getLastRow(); 
for (; responsesvalues[lastRow - 1][8] == "" && lastRow > 0; lastRow--) {} 
var ILastNonZero = responsesvalues[lastRow - 1][8]; 
var ILastNonZeroDate = new Date('responsesvalues[lastRow - 1][0]').getTime(); 
+2

'新的日期( 'responsesvalues [LASTROW - 1] [0]')'爲什麼加引號? – Andreas

+0

謝謝。這解決了日期問題。你能解決1)中的其他問題嗎? –

+0

不要在循環中更改'lastRow'的值'...; LASTROW - )'。改爲使用額外的變量。 – Andreas

回答

0

沒有一個電子表格來測試這只是一個「可能應該努力」 -attempt

1)使用一個額外的變量來計算最後一行的每一列。
我使用i來計算電子表格的最後一個填充行與最後一列填充的行之間的差異。 .getLastRow()的文檔沒有說明該值是否爲零。因此,在腳本

2)的評論中new Date()調用刪除引號

// get the data range 
var lastRow = spreadsheet.getSheetByName("Form responses 1").getLastRow(); 
var responsesvalues = spreadsheet.getSheetByName("Form responses 1").getRange("A1:Q" + lastRow).getValues(); 
var i; 

// get the last row in column G with non-zero value and corresponding date 
for (i = 0; i <= lastRow; i++) { 
    if (responsesvalues[lastRow - 1][6] !== "") { 
     break; 
    } 
} 
var GLastNonZero = responsesvalues[lastRow - i - 1][6];  // not sure about the -1 
var GLastNonZeroDate = new Date(responsesvalues[lastRow - i - 1][0]).getTime();   // not sure about the -1 

// get the last row in column I with non-zero value and corresponding date 
for (i = 0; i <= lastRow; i++) { 
    if (responsesvalues[lastRow - 1][8] !== "") { 
     break; 
    } 
} 
var ILastNonZero = responsesvalues[lastRow - i- 1][8];  // not sure about the -1 
var ILastNonZeroDate = new Date(responsesvalues[lastRow - i - 1][0]).getTime();  // not sure about the -1 
+0

'.getLastRow()'是基於1的,因爲它是SpreadsheetApp中的所有行引用。 – Mogsdad