0

職場で取り組んでいる仕事のタスクを含むスプレッドシートを Google ドキュメントに持っています。私がやりたいことは、行全体を目的の受信者に送信することですが、メールアドレスの後の最初の列から情報を送信することしかできません。すべてに期日があり、その期日が近づいたらリマインダーを送信するようにしたいのですが、その方法がわかりません。

どんな助けでも大歓迎です。これが私が今持っているコードです:

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 3;  // First row of data to process
  var numRows = 2;   // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = sheet.getRange(startRow, 1, numRows, 2)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (i in data) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    var message = row[1];       // Column B, Column C, Column D, Column E, Column F, Column G
    var subject = "Email Test Spreadsheet";
    MailApp.sendEmail(emailAddress, subject, message);
  }
}
4

3 に答える 3

0

次のように dataRange を定義すると:

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

numRowsのstartRow列 1からデータを読み取りますが、 2 列のみ(最後の値は「幅」) であるため、この最後の値を変更するだけで、必要なすべての列を取得するようにスクリプトを簡単に変更できます。次に、row[i].toString() を使用して、カンマ区切りのフィールドを取得します。

次に、たとえばテーブルにデータを表示するために HTML 形式を使用してより良いプレゼンテーションを得たいと思うかもしれませんが、これはあなたの質問の要点の範囲外です ;-)

于 2012-07-19T20:49:34.603 に答える
0

このようにデータ範囲を定義すると

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

あなたはからデータを取得していますA3:C5

ドキュメントを参照することもできます

問題の説明に従ってサンプルのスプレッドシートを投稿できる場合は、他の人があなたを助けるのに役立ちます.

于 2012-07-19T21:57:23.133 に答える
0

この部分:var message = row[1];配列の 2 番目の要素 (インデックス 1) のみを取得します。すべての配列要素を取得するには、行を反復処理する必要があります。

var message = row[1];
message.concat(row[2]);
message.concat(row[3]);

等々。または、ループを構築することもできます。

http://www.w3schools.com/jsref/jsref_concat_string.asp

そして、範囲を取得するために、なぜそれを難し​​い方法で行うのでしょうか? sheet.getRange("A2:B3"); それはあなたがその行の上のコメントに入れようとしているとあなたが言った範囲ですが、それはわずか4セルです. sheet.getRange("A2:G3")もちろん、シートに行を追加する場合は、毎回コードを変更する必要があります。

代わりに、これを試してください。

var bottomRow = sheet.getLastRow();
var rangeInA1 = "A2:G"+bottomRow;
var dataRange = sheet.getRange(rangeInA1);
于 2012-11-30T22:49:14.700 に答える