为什么Google Apps脚本发送的某些带有表单提交触发器的电子邮件发送两次?

问题描述 投票:1回答:1

我注意到我从Google App Script发送的电子邮件中触发了表单提交触发,发现我近300封电子邮件中有3封发送了两次!我对此一无所知,这是我写的。


function emailAsExcel(spreadsheetId,subject,message,fileName,link) {

  var ss = SpreadsheetApp.openById(spreadsheetId);
  var fileId = ss.getId();
  var data = ss.getActiveSheet().getRange('A2:D2').getValues();

  var url           = 'https://docs.google.com/spreadsheets/d/'+fileId+'/export?format=xlsx';
  var token         = ScriptApp.getOAuthToken();
  var response      = UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' +  token
    }
  })
  var blobs   =  response.getBlob().setName(fileName+'.xlsx');

  var picblobs = DriveApp.getFileById(getIdFromUrl(link)).getBlob().setName(fileName + '.jpg');

  var sender = "[email protected]"+","+ "[email protected]";

  var email = sender;

  MailApp.sendEmail(email,subject,message,{attachments: [blobs, picblobs]});  

}

function genFile(){

  var ss = SpreadsheetApp.openById('xxxxxxxxxxxx');
  var sheet = ss.getSheetByName('yyyyy');

  var lastRow = sheet.getRange(1,9,sheet.getLastRow()).getValues().filter(String).length;
  Logger.log(lastRow);
  var date = sheet.getRange('A'+lastRow).getValue();
  var name = sheet.getRange('J'+lastRow).getValue();
  var surname = sheet.getRange('K'+lastRow).getValue();
  var number = sheet.getRange('E'+lastRow).getValue();
  var prov = sheet.getRange('F'+lastRow).getValue();
  var brand = sheet.getRange('G'+lastRow).getValue();
  var link = sheet.getRange('I'+lastRow).getValue();  

  var subject = name+'_'+surname;

  var message = 
      'customer fullname : '+ name +' '+surname+'\n'
      +'num : '+ number + prov+'\n'
      +'bra : '+ brand +'\n'

  var fileName = name+ ' ' +surname;
  Logger.log(link); 

  var destination = DriveApp.getFileById('aaaaaaaaaaaaaaaa').makeCopy().getId();
  var newFile = SpreadsheetApp.openById(destination);
  var newSheet = newFile.getSheetByName('bbbbbbbbb');

  newSheet.getRange('A2').setValue(date);
  newSheet.getRange('B2').setValue(name+' '+surname);
  newSheet.getRange('C2').setValue(number);
  newSheet.getRange('D2').setValue(prov);
  newSheet.getRange('E2').setValue(brand);
  newFile.setName(fileName);

  emailAsExcel(destination,subject,message,fileName,link);

}

function getIdFromUrl(url) { return url.match(/[-\w]{25,}/); }
  genFile();
}

我试图弄清楚,但我仍然不知道发生了什么,所以我需要你们的建议。预先谢谢!

google-apps-script google-sheets triggers form-submit
1个回答
0
投票

[您(或有权访问此脚本的另一个Google帐户)创建了多个触发器时,可能会发生这种情况。

转到https://script.google.com/home/triggers,选择您的项目并删除所有重复的onSubmit触发器。

© www.soinside.com 2019 - 2024. All rights reserved.