0

私はまだここでロープを学んでいて、誰かがこれについての最善の方法を親切に提案してくれることを望んでいました(私は解決策を探しましたが成功しませんでした!):

私は非常に単純なスプレッドシートを持っています:

列A:電子メールアドレス。列B:送信するメッセージ。(列Aは、Sheet2のより長いアドレスのリストからいくつかの電子メールアドレスを取得する式を使用して生成されます。)

Sheet2には、すべての電子メールアドレスの「マスター」リストが含まれています。-列A:名前。列B:電子メールアドレス

以下のコードを出発点として使用しています。Sheet1のアドレスに電子メールを送信し、電子メールが送信されるたびに(つまり、スクリプトがその行の処理を完了したときに)、列Cのセルに「EMAIL_SENT」のマークを付けます。

Sheet2のC列に各人に送信された電子メールの総数を数えたいのですが、これに取り組む最善の方法はわかりません。正直なところ、どこに行けばよいのかわかりません。始める!

function sendEmails() {

  var sheet = SpreadsheetApp.getSheetByName('Sheet1');
  var EMAIL_SENT = "EMAIL_SENT";
  var startRow = 1;  // First row of data to process
  var dataRange = sheet.getDataRange()
  var data = dataRange.getValues();

  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[0];  // First column
    var message = row[1];       // Second column
    var emailSent = row[2];     // Third column

    if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates

      var subject = "Sending emails from a Spreadsheet";

      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 3).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();  
}
}
}

前述のように、Sheet2には全員の電子メールアドレスが含まれているため、Sheet2の各人の数を数えておきたいと思います(Sheet1にはほんの一握りのアドレスしかなく、このリストは毎日変更されます)。

誰かがこれに光を当ててくれませんか?任意の提案をいただければ幸いです。

見てくれてありがとう。

4

1 に答える 1

1

ステップ 1: その電子メールがある Sheet2 の行を見つけます。

var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var numRows = sheet2.getDataRange().getNumRows();
var emailList = sheet2.getRange(1,2,numRows,1).getValues();
var emailRow = -1;
for (var j=0; j<numRows; j++) {        
  if (emailList[j][0]==WHATEVER_EMAIL_YOU_ARE_LOOKING_FOR) {
    emailRow = j;
    break;
  }
}
if (emailRow==-1) { /*ERROR! Couldn't find email.*/ }

ステップ 2: メールの古いカウントを取得します。

var oldValue = sheet2.getRange(emailRow+1,3).getValue();

ステップ 3: 新しい値 + 1 を書き込みます。

sheet2.getRange(emailRow+1,3).setValue(oldValue+1);

注: emailRow は 0 から始まりますが、getRange() は 1 から始まります。

于 2013-02-10T19:25:13.550 に答える