0

このスクリプトを試して、行データを配列に抽出しました。最初の2つの列からのデータは抽出できましたが、残りの列については、収集されたデータが「未定義」として表示されています。スクリプトで発生したエラーを誰かが教えてくれますか?

同じことが他のシートでも試されており、これはうまく機能しますが、フォームベースのスプレッドシートでは機能しませんか?誰かがこのスクリプトの背後にあるエラーを引き出すことができますか

function sendEmails3() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Issues");
  var startRow = 2;  // First row of data to process
  var numRows  = sheet.getLastRow(); // Number of rows to process
  var dataRange = sheet.getRange(startRow, 1, numRows, 3)

      // Fetch values for each row in the Range.
      var data = dataRange.getValues();
  var message_body2= new Array();
  var message_body1 =    " <html> <body> <table> <tbody>" 
      +"<tr>    <th> Timestamp </th> "
      +"    <th>    Program</th> "
      +"    <th>    District</th> "
      +"    <th>    Type to Issue</th> "
      +"    <th>    Name</th> "
      +"    <th>    Mobile Number</th> "
      +"    <th>    Personal Mail ID</th> "
      +"    <th>    Issue Description (not more that 100 words) if more, Kindly mail to ap_admin@drreddysfoundation.org</th> "
      +"    <th>    Share us the duration, since how many days the issue persist. ( in DAYS)</th> "
      +"    <th>    Center Mail ID</th> "
      +"    <th>    Issue Addressed</th> "
      +"    <th>    Issue Addressed Date</th> ";

  var message_body3 =   "</tbody> </table> </body> </html>";

  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var timeStamp = row[0];  // timestamp column
    var addressedDate = row[11];

    if (addressedDate != "" && timeStamp != "") {  // Prevents sending duplicates

      message_body2[i] = "</tr> <tr> "
        +"  <td>" + row[0] + "</td> "
        +"  <td> "+ row[1] + " </td> "
        +"  <td> "+ row[2] + " </td> "
        +"  <td> "+ row[3] + " </td> "
        +"  <td> "+ row[4] + " </td> "
        +"  <td> "+ row[5] + " </td> "
        +"  <td> "+ row[6] + " </td> "
        +"  <td> "+ row[7] + " </td> "
        +"  <td> "+ row[8] + " </td> "
        +"  <td> "+ row[9] + " </td> "
        +"  <td> "+ row[10]+ " </td> "
        +"  <td> "+ row[11]+ " </td> "
        +"  <td> "+ row[12]+ " </td> " + "</tr> " ; 
    }
    Browser.msgBox( row[2] + " - " + row[3] + " - " + row[4] + " - " +  row[5] + " - " + row[6] + " - " + row[7] + "  - " + row[8] + "  - " + row[9] + " - " + row[10]+ " - " + row[11]+ " - " + row[12]);
  }
  var complete_message = message_body1 + message_body2+ message_body3;

  // check data accumulated
  Browser.msgBox(complete_message);  

  // export to a cell all the extracted data to verifiy  
  sheet.getRange(i, 3).setValue(complete_message);
}

スクリプトとスプレッドシートを表示するには、ここをクリックしてください

4

1 に答える 1

2

問題を引き起こしているいくつかの異なるエラーがあるようです。

まず、startRowを2に設定しましたが、スプレッドシートの行2は空白です。行3から開始するか、行2を削除する必要があります。

次に、この行は3つの列のみを含むことを示しています。

var dataRange = sheet.getRange(startRow, 1, numRows, 3)

最後の引数3は、データ範囲内の列の数です。したがって、すべての列を含める場合は、12にする必要があります。または、sheet.getLastColumn()を使用することもできます。

于 2012-06-07T15:49:12.577 に答える