我正在嘗試發送帶有附件的電子郵件。
附件的代碼正在運行,但正在努力添加將使用電子表格的任何人的 gmail 簽名。
我的 html 代碼顯示不正確。
有人可以幫助我嗎?
我有以下代碼:
//Send Email to Supplier
function approver() {
const ui = SpreadsheetApp.getUi();
const row = SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
Logger.log(row);
const data = SpreadsheetApp.getActiveSheet().getRange(row, 8, 1, 8).getValues()[0];
const user = {
first: data[4]
, email: data[7]
, attachments: data[0]
, row: row
};
Logger.log(user);
const res = ui.alert('Send to ' user.first '(' user.email ')?', ui.ButtonSet.YES_NO);
if (res == ui.Button.YES) {
sendUser(user);
}
Logger.log(res);
}
function sendUser(user) {
var row = SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
var filename = SpreadsheetApp.getActiveSheet().getRange(row,8,1,1).getValue();
var folder = DriveApp.getFoldersByName('COPIES SUPPLIER QUOTES').next();
var file = folder.getFilesByName(filename);
const temp = HtmlService.createTemplateFromFile('EmailTemplate');
temp.user = user;
const message = temp.evaluate().getContent();
GmailApp.sendEmail(
user.email
, 'Tester'
, htmlBody = message
, //'Automatic Emailer Script'
{attachments: [file.next().getAs(MimeType.PDF)]}
);
提前致謝...
uj5u.com熱心網友回復:
我用這個函式測驗了你的 html:
GS:
function sendEmail() {
const user = {first:"James",last:'Brown'};
let t = HtmlService.createTemplateFromFile('ah1');
t.user = user;
GmailApp.sendEmail('my email','Subject','Hello Word',{htmlBody:t.evaluate().getContent()})
}
HTML:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<p style="font-family: fantasy;color:red;font-size:3em">Hi,
<?= user.first ?>
</p>
<div>
You have been approved
</div>
<div>
Congrats ....
<?= user.first ?>
<?= user.last ?>
</div>
</body>
</html>
這就是電子郵件的樣子:

然后我把你的代碼壓縮到只有必需品
function approver() {
const folder = DriveApp.getFolderById(gobj.globals.testid);
let files = folder.getFilesByType(MimeType.GOOGLE_SHEETS);//need files that I can get as pdf
let fA = [];
while(files.hasNext()) {
let file = files.next();
fA.push(file.getAs(MimeType.PDF));//fA is the array for the attachments
}
let temp = HtmlService.createTemplateFromFile('ah1');
temp.user = {first: 'James',last: 'Brown', email: gobj.globals.calendarid};
GmailApp.sendEmail(temp.user.email,'Tester', 'The missing parameter',{htmlBody:temp.evaluate().getContent(),attachments: fA});
}
我在您的代碼中發現的最后一個錯誤是您遺漏了 body 引數的空值。缺少 body 引數會導致 options 引數被誤讀,這就是您的 html 無法正常作業的原因。
所以現在最終的電子郵件看起來像這樣(我使用了其中包含四個電子表格的目錄之一):

uj5u.com熱心網友回復:
@Cooper,感謝您提供的代碼,非常有用。這是當前使用的代碼,您將看到我也附加了簽名:
GS
function approver() {
const ui = SpreadsheetApp.getUi();
var claim = SpreadsheetApp.getActiveSheet().getRange('Claimnumber').getValue();
var signature = Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return true}})[0].signature;
const row = SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
Logger.log(row);
const data = SpreadsheetApp.getActiveSheet().getRange(row, 8, 1, 8).getValues()[0];
const user = {
first: data[4]
//, last: data[1]
, email: data[7]
, attachments: data[0]
, dnumber: claim
, usignature: signature
, row: row
};
Logger.log(user);
const res = ui.alert('Send to ' user.first '(' user.email ')?', ui.ButtonSet.YES_NO);
if (res == ui.Button.YES) {
sendUser(user);
}
Logger.log(res);
}
function sendUser(user) {
var row = SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
var filename = SpreadsheetApp.getActiveSheet().getRange(row,8,1,1).getValue();
var folder = DriveApp.getFoldersByName('COPIES SUPPLIER QUOTES').next();
var file = folder.getFilesByName(filename);
let temp = HtmlService.createTemplateFromFile('EmailTemplate');
temp.user = user;
GmailApp.sendEmail(
user.email
,'Quote for Claim number' ' ' user.dnumber
,'Hello World'
,{htmlBody:temp.evaluate().getContent() user.usignature,attachments:[file.next().getAs(MimeType.PDF)]})
HTML
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<p style="font-family: fantasy;color:red;font-size:3em">Hi,
<?= user.first ?>
</p>
<div>
Please find attached the quote for Claim number <?= user.dnumber ?>.</p>
<p><br></p>
<p>Thank you.</p>
<p><br></p>
</div>
</body>
</html>
這是按預期作業的。我怎么感謝你?字數不夠!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/358812.html
標籤:谷歌应用程序脚本
