[我试图在单击按钮时使用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未定义”。
我在做什么错?
我只是不知道您是如何尝试实现此电子邮件自动化的,但是这里有一些可以帮助您-从googlesheet发送电子邮件。谷歌驱动器的附件和其他功能。
只需在相应的列中填写信息,然后按电子邮件按钮。使文件名确实存在于Google云端硬盘中
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);
}
}
};