【问题标题】:Exception: The parameters (String,String,String,(class),(class)) don't match the method signature for GmailApp.sendEmail例外:参数 (String,String,String,(class),(class)) 与 GmailApp.sendEmail 的方法签名不匹配
【发布时间】:2021-12-09 02:02:13
【问题描述】:

我正试图找出解决我的错误的方法,正如对象中提到的那样。出了点问题

GmailApp.sendEmail.

顺便说一句,我是 GAS 编码的绝对新手,如果您认为脚本可以增强,请随意。

    function emailAsPDF() {

 SpreadsheetApp.flush();
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 ss.setActiveSheet(ss.getSheetByName("Recherche"));
 var sheet = ss.getActiveSheet();
 var gid = sheet.getSheetId();
 var pdfOpts = 
    + // export as pdf
    '&size=0' + // paper size letter / You can use A4 or legal
    '&portrait=false' + // orientation portal, use false for landscape
    '&fitw=true' + // fit to page width false, to get the actual size
    '&sheetnames=false&printtitle=true' + // hide optional headers and footers
    '&pagenumbers=true&gridlines=false' + // hide page numbers and gridlines
    '&fzr=true' + // do not repeat row headers (frozen rows) on each page
    '&attachment=false' +
    gid;
// '&size=0&fzr=true&portrait=false&fitw=true&gridlines=false&printtitle=true&sheetnames=false&pagenumbers=true&attachment=false&gid='+gid;
 var url = ss.getUrl().replace(/edit$/, '') + 'export?format=pdf' + pdfOpts
 var options = {
      headers: {
        'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken()
      }
    }
  options = {muteHttpExceptions: true};
  var blobresponse = UrlFetchApp.fetch(url, options);
  var CandidateName = ss.getRangeByName("Nom.Candidat").getValue();
  var blob=blobresponse.getBlob().setName(ss.getName() + " - " + CandidateName +".pdf" );
  var emailAddress=Session.getActiveUser().getEmail();
  var signature = Gmail.Users.Settings.SendAs.get("me", emailAddress).signature; 
  var mess = "Voulez-vous envoyer votre rapport  à l'adresse : " + emailAddress;
  var ans= Browser.msgBox("Courriel", mess, Browser.Buttons.YES_NO);
  if (ans===Browser.Buttons.NO){return;}
  var mess="Votre rapport a été envoyé à l'adresse : " + emailAddress;
  //var ss=SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName("Recherche");
  var data = ss.getSheetByName("Données");
  const corps = data.getRange("A24:E27").getValues();
  const htmlTemplate = HtmlService.createTemplateFromFile("HtmlSigTemplate");
  htmlTemplate.corps = corps;
  var emailSubject = "Vérifications pré-emploi complétées" +" - "+ CandidateName;
  const htmlForEmail = htmlTemplate.evaluate().getContent() + "--" + "<br>" + signature;
  console.log(htmlForEmail);
  //var emailMessage="Bonjour," + "\n\n" + "J’ai le plaisir de vous informer que les vérifications sont complétées pour le candidat indiqué au tableau de résultats pré-emploi suivant:" + "\n\n" + "Bonne journée !" + "<br>" + signature;
  var shts=ss.getSheets();
  GmailApp.sendEmail(
    emailAddress, 
    emailSubject, 
    corps,
    {htmlBody: htmlForEmail},
    {attachments:[blob]});
  Browser.msgBox("Courriel", mess, Browser.Buttons.OK); 
}

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    试试这个:

    GmailApp.sendEmail(emailAddress,emailSubject,corps,{htmlBody:htmlForEmail, attachments:[blob]});
    

    我认为你的括号 } 不合适

    【讨论】:

    • 您的建议解决了我最初的问题。但是,电子邮件中发送的 pdf 附件没有打开。有什么建议吗?
    • 对不起,我不怎么使用 UrlFetchApp。可能@Tanaike 或 TheMaster 现在会比我做得更多。
    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 2019-11-20
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    相关资源
    最近更新 更多