2016-03-18 48 views
0

我試圖在Google電子表格上運行腳本。以下是代碼片段:2.0在谷歌應用程序腳本中被識別爲20

var startRow = 2; 
var data = dataRange.getValues(); 
for (i in data) { 
    sheet.getRange(startRow + i, 4).setValue("EMAIL_SENT"); 
} 

我期望從第二行出現「EMAIL_SENT」。但是,從第20行開始出現。當我使用Logger寫出startRow時,它顯示爲2.0,而不是2.我猜測2.0被認爲是20,因爲我住在芬蘭,逗號而不是點被用作小數點。話雖如此,我的語言設置是用日語設置的,其中點用於小數點。所以,這種解釋是不合邏輯的,但這是我能想到的唯一解釋。當我使用

Math.round(startRow) 

這也沒有幫助。有人可以提出解決方案嗎?謝謝!

+0

代替'用於(i的數據)''嘗試爲(VAR I = 0; I

+0

實際上你擁有的問題不是你的想法。 2.0是記錄器中整數的正常表示。實際的問題是,在你的代碼中,添加2 + 0會給出20而不是2,因爲腳本不能識別整數並且假定它們是字符串。桑迪的解決方案是避免這種問題的好方法。 –

+0

其他人已經回答了這個問題,但只是增加了一個最佳實踐評論:不要將值添加到具有單個獲取範圍的工作表中......長期來說,setvalue是循環內的慢速模式。最好操作一個代表內存中整個範圍的單個數組,然後對該表單進行一次寫入。 – Jonathon

回答

0

我不知道爲什麼,但由於某種原因,該類型的循環不會創建編號索引(i)。所以,你的腳本讀取startRow + i就像是說2和i,而不是2加i

你沒有看到數字20,你所看到的數字2的指數爲0。

要改變這一點,您可以使用此類型的循環。

for(var i=0;i<data.length;i++){ 
    sheet.getRange(startRow + i, 4).setValue("EMAIL_SENT"); 
    } 

或者,可以只添加​​到i

sheet.getRange(startRow + Number(i), 4).setValue("EMAIL_SENT"); 
+0

對不起,在提交其他評論時正在寫我的答案。我剛剛說了他們的話。 – Mullenb

相關問題