Я получаю сообщение об ошибке "Исключение" при попытке создать черновик Gmail с помощью скрипта. Вы можете помочь мне исправить это? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь создать черновики Gmail с помощью следующего сценария

  function sendEmails(){

      var ss = SpreadsheetApp.getActive().getSheetByName('SendMail')
      var lr = ss.getLastRow();
      var lc = ss.getLastColumn();

      var quotaLeft = MailApp.getRemainingDailyQuota();

       if((lr-1) > quotaLeft) {
         Browser.msgBox("You have " + quotaLeft + " left and you're trying to send " + 
        (lr-1) + " emails. Emails were not send.");
       } else {

        for (var i = 2;i<=lr;i++){

      var currentEmail = ss.getRange(i, 1).getValue();
      var currentSubject = ss.getRange(i, 2).getValue();
      var templateText = ss.getRange(i, 3).getValue();
      var currentname = ss.getRange(i, 4).getValue();
      var currentcity = ss.getRange(i, 8).getValue(); 
      var currentfirm = ss.getRange(i, 12).getValue();     
      var reply = ss.getRange(i, 5).getValue();
      var imageID = ss.getRange(i, 6, 1, lc).getValues().toString().split(',').filter(String);
      var image = {};    
      var message = templateText.replace("{name}",currentname).replace("{city}",currentcity).replace("{firm}",currentfirm);                     
      var signature = ss.getRange(i, 7).getValue(); 

          for (var x = 0; x < imageID.length; x++){
            try{
          image["inlineImage"+x] = DriveApp.getFileById(imageID[x]).getBlob();   
          message += '<br/><img src="cid:' + "inlineImage"+x +'" />';
            } catch (e) {
                templateText += "<p>Image merge failed: " + e;         
           }
           }

      if(image){
      GmailApp.createDraft({
        to: currentEmail,
        replyTo: reply,
        subject: currentSubject,
        htmlBody: message + signature,
        inlineImages: image,    
      });

        } else {

      GmailApp.createDraft({
        to: currentEmail,
        replyTo: reply,
        subject: currentSubject,
        htmlBody: message + signature,  
      });
      }

        } //close for loop

      } //close else statement

     } //close sendEmails

Этот сценарий отлично работал, когда вместо GmailApp.createDraft я использовал mailApp.sendEmail.

Когда при запуске сценария ничего не происходит, и появляется следующая ошибка:

«Исключение: параметры (строка) не соответствуют сигнатуре метода для GmailApp.createDraft»

Есть ли способ определить причину появления ошибки?

Спасибо

1 Ответ

1 голос
/ 10 июля 2020

Аргументы createDraft(recipient, subject, body, options): recipient, subject, body, options. От This script worked perfectly when, instead of using GmailApp.createDraft, I was using mailApp.sendEmail., думаю, это причина вашего сообщения об ошибке. Поэтому в своем сценарии измените следующее.

От:

if(image){
  GmailApp.createDraft({
  to: currentEmail,
  replyTo: reply,
  subject: currentSubject,
  htmlBody: message + signature,
  inlineImages: image,    
  });
} else {
  GmailApp.createDraft({
  to: currentEmail,
  replyTo: reply,
  subject: currentSubject,
  htmlBody: message + signature,  
  });
}

Кому:

if(image){
  GmailApp.createDraft(
    currentEmail,
    currentSubject,
    "",
    {replyTo: reply, htmlBody: message + signature, inlineImages: image}
  );
} else {
  GmailApp.createDraft(
    currentEmail,
    currentSubject,
    "",
    {replyTo: reply, htmlBody: message + signature}
  );
}

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...