2017-03-12 3 views
0

私は、Google Script(基本的にJavaScriptと同じもの)を使って返答のスプレッドシートを反復する方法を探しています。それは問題なく動作しましたが、問題はこのコードがすでに電子メールで送信されたデータの電子メールを送信し続けることです。私はJavaScriptをほとんど知りませんが、前の行を削除して1行だけを反復するのが理にかなっていると思います。これまでのコードは次のとおりです。Googleスプレッドシートの行をどのように走らせることができますか?

function autoEmail() { 
var sheet = SpreadsheetApp.getActiveSheet(); 
var startRow = 2; 
var numRows = 2; 
var dataRange = sheet.getRange(startRow, 1, numRows, 7) 
var data = dataRange.getValues(); 
for (i in data) { 
var column = data[i]; 
var emailAddress = "OMITTED FOR PRIVACY"; 
var message = column[3] + ", who is a " + column[4] + " Scout, wants to have a " + column[6] + " on " + column[5] + ". You can contact him at " + column[1] + ". This is an automated email sent by OMITTED FOR PRIVACY."; 
var subject = column[3] + " Wants To Rank Up!"; 
MailApp.sendEmail(emailAddress, subject, message); 
} 
} 

お勧めはありますか?

答えて

0

あなたは現在の行を処理していると言っていますので、誤って再処理しないように削除してください。妥当だと思われますが、何か問題が生じた場合に備えて、あなたのデータを削除しない方がいいでしょう。たぶん、各行の最後にある空の列に「done」と書いて、新しい電子メールを送信する前にそれを確認できますか?

今、いくつかの質問は、私はより多くのを助けることができる -

を使用すると、2つの行(numRows = 2)をフェッチしているのはなぜ? 1つの行、またはN(エントリ数)の行をフェッチするかのように思えます。

はまた、私はいつもの代わりに... ... JavaScriptで、それはループのための通常のを使用することをお勧めしますことを

for (var colNum = 0; colNum < data.length; colNum++) { 
    var column = data[colNum]; 

を聞いたため、ループ...

for (i in data) { 
    var column = data[i]; 

"継承されたプロパティも列挙される"(more info here)のため、配列のようなオブジェクトにあります。

編集:私はiは、2次元配列内のデータの一部ではなく、インデックスかもしれないと思うので、あなたがこれを行うとき

for (i in data) { 
    var column = data[i]; 

がループLogger.log(i);iをロギングしてみてください、そういえば。

のEND EDIT

免責事項:私は、スタックオーバーフローが答えで明確化を求めてお勧めしませんが、私は「コメント」を追加し、まだ十分な評判を持っていない知っています。 :-)

関連する問題