2016-05-14 3 views
0

n00bコーダーここでは、Googleスクリプトを使用して、 "for"ループと "if"ステートメント内で、後で使用する値のインデックスを保存したいと思っています。

私は2つのスプレッドシートを作成しようとしています.1つは学校での学生の出席を追跡し、もう1つはTrackの練習での出席を追跡します。目標は、私がボタンとして設定できる機能を書くことです。その機能をクリックすると、学生が学校にいる場合に複数の人に電子メールを自動的に送信しますが、許されずにスポーツには欠席します。

今のところ、すべてがうまくいきますが、問題が1つあります。生徒が上記の条件を満たしているかどうかによって、「良い」または「悪い」と表示される列があります。この関数は、これらを配列に変換します。私は、 "Bad"のインデックスを使用して、必要な電子メールアドレスを探し出します。このアドレスは、スプレッドシートから作成した別の配列の同じインデックスポイントに格納されています。このインデックスポイントを保存して電子メールアドレスを参照する方法はわかりません。以下のコード。

function sendEmailsMonday() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TrackAttendance"); 
    var dataRange = sheet.getRange("D2:D30"); 
    var data = dataRange.getValues();// Gets array of "Good" and "Bad" 
    for (i in data) { 
    if(i = "Bad") { 
     var place = data.indexOf(i); 
     var dataRange2 = sheet.getRange("M2:M30");// Gets array of email addresses 
     var data2 = dataRange2.getValues(); 
     var emailAddress = data2[place]; 
     var message = "This is an automated email informing you that your child/advisee ____ was present at school today, but missed Track without being excused. Feel free to email Mr. @ with any questions."; 
     var subject = "___ missed Track Practice"; 
     MailApp.sendEmail(emailAddress, subject, message); 
     return; 
    } 
    } 
} 

したがって、問題はインデックス行に付いています。私は

var place = data.indexOf(i); 

を取り除くと

var emailAddress = data[28]; 

または任意の他の数の

var emailAddress = data[place]; 

を交換得れば、それは、電子メールアドレスを取得し、それを送信します。しかし、それは他の列の値とは関係ありません。

このように見えるのは簡単な修正ですが、私はこれが悪いです。ハープ。

答えて

0

非常に遅れています。私はあなたがほとんどそこにいると思う。

if(i == "Bad") { 

をし、私との '場所' に置き換えます:

あなたのIF文は読むべき

var emailAddress = data2[i]; 

今期待通りに動作するはずです。

関連する問題