2016-03-18 30 views
0

Bir Google e-tablosunda bir komut dosyası çalıştırmaya çalışıyorum.2.0, google apps komut dosyasında 20 olarak tanınır.

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

ben "email_sent" 2 satırdan göründüğünü bekliyoruz: Aşağıdaki kod parçacığı olduğunu. Ama bunun yerine, 20. sıradan ortaya çıkıyor. LogRead kullanarak startRow yazdığımda, 2 yerine 2.0 olarak görünür. Ben Finlandiya'da yaşadığımdan beri 2.0'ın 20 olarak kabul edildiğini tahmin ediyorum, nokta yerine virgül bir nokta noktası olarak kullanılıyor. Bunu söyledikten sonra, dil ayarım nokta nokta için nokta kullanılan Japonca ile ayarlanır. Yani, bu yorum mantıklı değil, ama aklıma gelen tek açıklama bu. Ben de bu yardımcı olmadı: Bu, ya da yardımcı olmadı. Birisi çözüm önerebilir mi? Teşekkür ederim!

+0

için Number() ekleyebilir '(i verilerde)' for (var 'denemek i = 0; i

+0

aslında sahip olduğunuz konu düşündüğünüz değil. 2.0, logger'daki bir tam sayı için normal gösterimdir. Asıl mesele, kodunuzda 2 + 0 eklenmesi 2 yerine 20 verir, çünkü betik tamsayıları tanımıyor ve dizge olduğunu varsayar. Sandy'nin çözümü, bu tür sorunları önlemek için iyi bir yoldur. –

+0

Diğerleri soruyu cevapladılar, ancak en iyi uygulama yorumunu ekledik: Değerleri, bireysel alma aralığı olan bir sayfaya eklemeyin… uzun vadede bir döngü içinde set değeri, yavaş bir modeldir. Hafızada tüm aralığı temsil eden tek bir diziyi manipüle etmek ve ardından sayfaya tek bir yazma yapmak daha iyidir. – Jonathon

cevap

0

Nedenini bilmiyorum, ancak nedense bu döngü türü numaralandırılmış dizin oluşturmuyor (i). Yani, sizin betik startRow + i okur 2 ve i, artı değil 2 i söyleyerek gibidir.

Sizin bunu değiştirmek için endeks 0.

ile sayı 2 görüyoruz numara 20 görmüyorsanız, sen döngü bu tür kullanabilir.

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

Ya da sadece Yerine i

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

Üzgünüm, diğer yorumlar gönderildiğinde cevabımı yazıyordu. Sadece söylediklerini tam olarak söyledim. – Mullenb

İlgili konular