使用Google Apps脚本发送电子邮件

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

[我试图在单击按钮时使用Google Apps脚本发送电子邮件。

按钮是已分配脚本的图形。

使用的Oauth范围:“ https://www.googleapis.com/auth/spreadsheets.currentonly”,“ https://www.googleapis.com/auth/gmail.addons.current.action.compose

要发送电子邮件,我需要根据文档获得访问令牌。

var accessToken = e.gmail.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);

我的功能-

sendSomeEmail(e){
    var accessToken = e.gmail.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);
    ...
}

但是,它显示出一个错误,“ e未定义”。

我在做什么错?

javascript google-apps-script google-sheets google-sheets-api gmail-addons
1个回答
0
投票

我只是不知道您是如何尝试实现此电子邮件自动化的,但是这里有一些可以帮助您-从googlesheet发送电子邮件。谷歌驱动器的附件和其他功能。

只需在相应的列中填写信息,然后按电子邮件按钮。使文件名确实存在于Google云端硬盘中

enter image description here

function myFunction(){

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails');


  cnt  =2;
  while(true){

  data = sheet.getRange(cnt,1).isBlank();

    flag = sheet.getRange(cnt, 5).getValue();

    if(data == false){

      var sub =  sheet.getRange(cnt, 1).getValue();

      var cmp = sheet.getRange(cnt, 2).getValue();

      var file_id = getFileID(sub+'.xlsx', cnt);

      if(flag != 'EMAIL_SENT'){

        var reci = sheet.getRange(cnt, 3).getValue();

        var subj = sub+" - "+cmp;

        try{

          var attach =  DriveApp.getFileById(file_id);

          var sig = HtmlService.createHtmlOutputFromFile('signature').getContent();

          GmailApp.sendEmail(reci, subj,sig, {htmlBody : sig,name :"Easy Emails", attachments :[attach.getAs(MimeType.MICROSOFT_EXCEL)] });

          sheet.getRange(cnt, 5).setBackground('green');

          sheet.getRange(cnt, 5).setValue('EMAIL_SENT');
        }

        catch (e){

          console.log()

          console.error('API got an error: '+ e)

          var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails');

          if(e == 'Exception: Invalid argument: id'){

            sheet1.getRange(cnt, 4).uncheck();

            sheet1.getRange(cnt, 5).setValue('File does not Exist?: ' +e);

            sheet1.getRange(cnt, 5).setBackground('pink');
          }

          else{

            sheet1.getRange(cnt, 4).uncheck();

            sheet1.getRange(cnt, 5).setValue('API got an error: ' +e);

            sheet1.getRange(cnt, 5).setBackground('pink');

          }


        }

      }

      else{

        cnt++;
        continue;

      }


    }
    else{
      break;
    }
   cnt++; 
  }
};






function getFileID(filename, num){

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails');

  var files = DriveApp.getFiles();

  while (files.hasNext()) {

    var file = files.next();

    try{

          if(filename == file.getName()){

           sheet.getRange(num, 4).check();

           return file.getId();

           break;

           }

          else{

              continue;

             }

       }

    catch (err){

      console.log()

      console.error('API got an error: '+ err)

      var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Emails');

      sheet2.getRange(num, 4).uncheck();

      sheet2.getRange(cnt, 5).setValue('File does not Exist?: ' +err);



    }


  }

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