0

私はこのスクリプトに長い間取り組んできました.Google Appスクリプトであり、提供された電子メールに電子メールアラートを自動的に送信し、1分ごとにスクリプトを実行しています.

したがって、セルの合計が 201 より大きい場合、ユーザーに電子メールが送信されます。しかし問題は、スクリプトが実行されるたびに電子メールを送信することです。

電子メールが既に一度送信されている場合、セル値が再び 201 未満になり、201 より大きい値に戻らない限り、再度送信されないというコーディングの助けが必要です。テキスト「送信済み」または「送信済み」を含むセルを作成することを考えていました。 "送信されません"

「未送信」と表示されている場合、合計が 201 より大きい場合はメール コードを実行します 「送信済み」と表示されていて合計が 201 より大きい場合は、メール コードを実行しません。

私はすべてが明確ではないことを知っていますが、これについて助けを得るのは非常に困難でした. これがコードです。

これが機能する場合、多くの人がこのスクリプトを使用できると確信しています。

 function sendEmail(email_address, email_subject, email_message) {
  MailApp.sendEmail(email_address, email_subject, email_message);
}

function test_sendEmail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.setActiveCell('A2');
  var criterion_cutoff = 201;
  var i = 0;
  var addr;
  var subj;
  var msg;


  do {
    addr = cell.offset(i,0).getValue();
    subj = cell.offset(i,1).getValue();
    msg = cell.offset(i,2).getValue();
    criterion = cell.offset(i,3).getValue();

    if(criterion == criterion_cutoff) {
      sendEmail(addr,subj,msg);
     // Browser.msgBox('Sending email to: ' + addr);
    }
    i++;
      } while( cell.offset(i, 0).getValue().length > 0 )


  Browser.msgBox('Done!');
}


だから私は if else 条件を do while の外に追加することを考えていました

 if(SpreadsheetApp.getActiveSheet().getRange(21,6).getValue() != 'Not Sent') {
    do {
        //same stuff as above
     } while(condition)

    }

   else 
       //don't know wht else to do in else condtion so just using googleclock
         SpreadsheetApp.getActiveSheet().getRange(2,7).setValue('=GoogleClock()')
4

1 に答える 1

0

私は自分でそれを理解したと思います。他の人が使用できるように、自分のソリューションを共有したい。

だから私は 2 を追加しました if else condition first セル値が < 201 であるかどうかを確認します それが設定した somecell の例よりも 201 より小さい場合 F5 = Not Sent

F5 の値が送信済みでセル値 == 201 であるかどうかを確認する別の if else ループは、電子メール コードを実行し、その電子メール コードを実行した直後にセル F5 を送信済みに設定します。

そのため、次回ループが再度実行されると、セルの値が

ただし、これには小さな問題が 1 つあります。これは 3 行のうち 1 行目でのみ機能します。if 条件をさらに追加することで、3 行すべてで使用できます。必要ないので、心配していません。

  function sendEmail(email_address, email_subject, email_message) {
  MailApp.sendEmail(email_address, email_subject, email_message);
}

function test_sendEmail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.setActiveCell('A2');
  var criterion_cutoff = 201;
  var i = 0;
  var addr;
  var subj;
  var msg;

  if((SpreadsheetApp.getActiveSheet().getRange(2,4).getValue() < '201'))  {
    SpreadsheetApp.getActiveSheet().getRange(2,6).setValue('Not Sent');
  }
  else  
    if((SpreadsheetApp.getActiveSheet().getRange(2,6).getValue() != 'Sent') && (SpreadsheetApp.getActiveSheet().getRange(2,4).getValue() == '201')) {
  do {
    addr = cell.offset(i,0).getValue();
    subj = cell.offset(i,1).getValue();
    msg = cell.offset(i,2).getValue();
    criterion = cell.offset(i,3).getValue();

    if(criterion == criterion_cutoff) {
      sendEmail(addr,subj,msg);
     // Browser.msgBox('Sending email to: ' + addr);
      SpreadsheetApp.getActiveSheet().getRange(2,6).setValue('Sent');
    }
    i++;
      } while( cell.offset(i, 0).getValue().length > 0 )

  Browser.msgBox('Done!');
}
    }
于 2012-07-11T13:00:53.393 に答える