Google Apps Scriptでメール送信するGmailApp.sendEmailメソッド、リファレンスを見るとoptionsパラメーターで「from」が指定できることが分かったので、早速試してみました。
function myFunction() { var file = DriveApp.getFileById('AB-CDEFG01234567890123456789'); GmailApp.sendEmail('to@ka-net.org', 'テストメール', '本文テスト', { attachments: [file.getAs(MimeType.PDF)], bcc: 'bcc@ka-net.org', cc: 'cc@ka-net.org', from: 'gas@ka-net.org', name: '差出人' }); }
ところが上記スクリプトを実行すると、fromの部分で「無効な引数: gas@ka-net.org」とのエラーが発生してしまいました。
そこでリファレンスをもう一度よく見てみると、fromの説明に
the address that the email should be sent from, which must be one of the values returned by getAliases()
GmailApp.getAliasesメソッド、Gmailアカウントに設定されたエイリアスを取得するメソッドの戻り値を使う、との記載がありました。
要するに、事前にGmailアカウントでエイリアス(別名アドレス)を設定しておかないといけなかったわけですね。
というわけで早速エイリアスを設定します。
設定手順は「別のアドレスからメールを送信する」にある通り、Gmailの設定画面から簡単に設定することができます。
エイリアス設定後、再度上記スクリプトを実行したところ、今度はエラーが発生することなくメールを送信することができました。
受信したメールも差出人がちゃんとfromオプションで指定したアドレスになっています。
Gmailアカウントにエイリアスを設定する、という一手間は掛かりますが、スクリプトから送信するメールでfromを自由に設定できるのはとても便利だと思います。
当記事を参考に別アドレスからの自動返信を試みていますがうまく動きません。
・MailApp.sendEmailを使うとメールは送られるもののFromが変わらず
・GmailApp.sendEmailを使うとメール自体送られず、ログも出ず(何も動いてないように見える)
当該スクリプトが今でも動作するかわかりますでしょうか。
もしくは試すことは可能でしょうか。
mhisaedaさん
当ブログの管理人です。
ご質問いただきました件について、
> ・MailApp.sendEmailを使うとメールは送られるもののFromが変わらず
MailAppクラスのsendEmailメソッドですと、
https://developers.google.com/apps-script/reference/mail/mail-app
にあります通り、optionsで“from”を指定することができません。
> ・GmailApp.sendEmailを使うとメール自体送られず、ログも出ず
下記コード(アドレスは変えてあります)でテストしてみましたが、問題無く別アドレス(エイリアス)から送信することができました。
メールが送信できないとのことですので、エイリアスの設定確認やメール送信部分のみのミニマムコードでテストされてはいかがでしょうか。
きぬあささん、
ご確認いただきありがとうございます。
記載いただいているコードで
無事メール送信できました。
パラメータの渡し方を間違えていたようです。
参考にしていたソースがHTMLメールのもので、
MailAppクラスだと動作し、GmaiAppクラスだと動作しませんでした。
【送信されない】
function myFunction() {
GmailApp.sendEmail(
{
to: ‘to@hogehogetest.jp’,
subject: ‘Test Subject’,
htmlBody: ‘Test Body’,
from: ‘from@hogehogetest.jp’,
name: ‘TEST MAIL’,
});
}
【送信される。ただしFrom指定はきかない】
function myFunction() {
MailApp.sendEmail(
{
to: ‘to@hogehogetest.jp’,
subject: ‘Test Subject’,
htmlBody: ‘Test Body’,
from: ‘from@hogehogetest.jp’,
name: ‘TEST MAIL’,
});
}
どうもありがとうございました。