0

Google ドキュメント内のすべてのシートで実行しようとしているスクリプトがあり、それを機能させる方法がわかりません。IT は 1 枚のシートで機能しますが、確認が必要な同じ形式のシートが多数あります。ありがとう。

すべてのシートに適用しようとしているスクリプトは次のとおりです。

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


function timestamp() {
return new Date()
}

var EMAIL_SENT = "EMAIL_SENT";


function test_sendEmail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.setActiveCell('A2');
  var criterion_cutoff = 5;
  var i = 0;
  var startRow = 2;
  var addr;
  var subj;
  var msg;
  var timecheck
  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();
    timecheck = cell.offset(i,11).getValue();
    if (timecheck > 0) {
      if(criterion < criterion_cutoff) {
        sendEmail(addr,subj,msg);
        Browser.msgBox('Sending email to: ' + addr);
      }}
    i++;
  } while( cell.offset(i, 0).getValue().length > 0 )
  sheet.getRange(2, 5).setValue(timestamp());  
  Browser.msgBox('Done!');
}
4

1 に答える 1

0

次の変更を行うことで、スクリプトを適用するIDの配列を使用できます
。1。変更

function test_sendEmail() {
  var sheet = SpreadsheetApp.getActiveSheet();

に:

function test_sendEmail(sheetID) {
  var sheet = SpreadsheetApp.openById(sheetID);

2。変更するシートのIDの配列を定義します。

var idArray = [Spreadsheet1_id, Spreadsheet2_id, ...];

3。配列のすべての要素を循環するループを作成します

for(var k in idArray) test_sendEmail(idArray[i]);

idArrayを手動で入力したくない場合は、Googleドライブ内のすべてのスプレッドシートのIDを取得する関数を作成できます。それが必要な場合は、ポイント2で提供したコード行の代わりに次のコードを使用してください。

var sprArr =  DocsList.getFilesByType("spreadsheet");
var idArray;
for(var k in sprArr) idArray.push(sprArr[i].getId());
于 2012-07-22T12:45:27.717 に答える