0

私は、複数選択問題への回答に基づいて2つの異なるメールのいずれかを送信するスクリプトをGoogleシートに書き込もうとしています。私はどちらか一方のメールを送信するためにif/else文を得ることができますが、それは複数選択肢の答えのテキストを認識せず、正しいメールを送信しません。ここで/Elseステートメントが別のメールを送信しない場合

がいっぱいスクリプトです:

function sendEmails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var startRow = 2; // First row of data to process 
    var numRows = 1; 
    // Fetch the range of cells A2:B3 
    var dataRange = sheet.getRange(startRow, 1, numRows, 8) 
    // Fetch values for each row in the Range. 
    var data = dataRange.getValues(); 
    for (var i = 0; i < data.length; ++i) { 
     var row = data[i]; 
     var title = row[1]; // First column 
     var startDate = row[3];  // Second column 
     var endDate = row[4]; 
     var description = row[2]; 
     var location = row[6]; 
     var eventImport = row[5]; 
     var emailAddress = row[7];  
     var multchoice = row[8]; 

     if (multchoice == "Part Time") { 
      var subject = "New Hire Part Time Email - " + startDate; 
      var emailBody = "Congradulations" 
      var htmlBody = "Congradulations! Part time person" 
      MailApp.sendEmail (emailAddress, subject, emailBody); 
     } else { 
      var subject = "New Hire Appointment - " + startDate; 
      var emailBody = "Congratulations! We are excited" 
      var htmlBody = "Congratulation! </i><br/>&nbsp;<br/> We are excited" 
      MailApp.sendEmail(emailAddress, subject, emailBody); 
     } 
    } 
} 

私は、問題はここにあると信じて:

if (multchoice == "Part Time") 

すべてのヘルプは大歓迎です!私は初心者です

+0

「multicoice」を記録して、その内容を確認してください。または、電子メールで送信してください... –

+0

エラーの場所と思われる場合は、開発コンソール(Chrome)を開き、そのif文の直前に '' 'debugger;' 'という行を追加してください。コードを再度実行します。変数 "multichoice"の値を調べて、何が問題かを確認します。いくつかの空白があり、代わりに '' 'multchoice.indexOf(" Part Time ")> -1'''と比較することができます。 –

+0

@Jenあなたの列のインデックスでは1ではなく0から数え上げます。配列のインデックスは0から始まります。 –

答えて

0

「1」で始まる変数を割り当てているようですが、私は「0」の代わりになります。それらを0で割り当ててカウントアップを開始します。

サンプルシートを使用することなく、私はあなたのために非常に多くのデバッグを行うことができません。

しかし、Apps Scriptには独自のデバッガが付属しています。デバッグする機能を選択し、再生ボタンの横にある小さなバグアイコンをクリックします。

ブレークポイントを設定するサイドバーをクリックします。ここでコードの実行が停止します。それはあなたが現在お使いのスコープ内のすべての変数を見ることができるブレークポイントにヒットしたら

enter image description here

。したがって、array,value、およびiの変数が表示されます。

enter image description here

問題がどこにあるかを見つけるためにあなたの利点およびデバッグコードにこれを使用してください。または、Logger.log()を使用して、コード内の特定のポイントで値をログに記録し、ログを読み取って問題がどこにあるのかを調べることができます。

+0

douglasg14bとsilinusを助けてくれてありがとう!私はデバッガを使用していくつかの問題を見つけ出しましたが、そのうちの1つは実際に変数を割り当てていました。私はまだそれが動作するようになっていないが、私は正しい軌道にいると思う... – Jen

+0

@Jenコードが添付されたスプレッドシートの例があるなら、私はあなたといっしょにデバッグを深めることができると確信している問題を見つけ出す。 –

0

if/else文では問題はありません。問題は、配列row[]の変数をどのように割り当てるかにあります。 getRange()関数で通常の数値を使用している間は、返されるrangeはそれらのセルの配列です。配列は常に[0]というインデックスで始まります。 var multchoice = row[8]var multchoice = row[7]に変更し、if/elseステートメントが機能します(他のすべての参照も変更したいと思うでしょう)。

+0

あなたがもっと問題を抱えている場合は、@ジェン、彼らが何であり、私たちがあなたを助け続けることができるかをお知らせください。 – Silinus

関連する問題