どうもcoto.です。
今回は、ドライブ上のGoogleドキュメントをPDFではなくWord形式(.docx)で
メールに添付し、送信する方法です。
まずはコード
function mail() {
const mail = '送信相手のメールアドレス'; //メールアドレスを取得
const mtitle = '先日の資料を送付します';//メールタイトル
const body = 'メール本文です。' ;//メール本文
//Googleドキュメントをdocxに変換
var fetchOpt = {
"headers" : { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() },
"muteHttpExceptions" : true
};
var filename = '送信したいドキュメント名.docx'
var docId = '添付したいファイルのID' ; //添付したいドキュメントのID
var fetchUrl = 'https://docs.google.com/document/d/' + docId + '/export?format=docx'; //docxに変換
var newfile = UrlFetchApp.fetch(fetchUrl,fetchOpt).getBlob().setName(filename); //ドキュメント名を変換
GmailApp.sendEmail(mail, mtitle, body, {attachments: [newfile]});//メール送信
}
説明
ファイル形式を指定しない場合はPDFで添付される
Googleドキュメントのファイルを特に指示せずそのままメールに添付する場合は、
function mail() {
const mail = '送信相手の@メールアドレス'; //メールアドレスを取得
const mtitle = '先日の資料を送付します';//メールタイトル
const body = 'メール本文です。' ;//メール本文
const file = DriveApp.getFileById('添付したいファイルのID');//ファイルIDを入力
GmailApp.sendEmail(mail, mtitle, body, {attachments: [file]});//メール送信
}
と、簡単なコードで送信できます。
ただ、このままだと以下のようにPDFファイルとして添付されてしまいます。
冒頭コードを使用すると.docxで添付される
したがって、Googleドキュメントをあらかじめ.docx形式に変換してから
メールに添付、送信するように追記しました。
冒頭のコードを使って送信すると、以下のように.docxファイルとして添付されます。
ちなみに、11行目の
var filename = ‘送信したいドキュメント名.docx’
と、14行目の
.setName(filename)
がなくても動作しますが、添付されたドキュメント名はすべて “export.docx”になります。
御託
「メールに添付して自動送信」自体は他の方の解説を頼りにすんなり出来たのですが、
送られてきたメールを見るとなぜかPDF!!
元のファイルはどうみてもちゃんとGoogleドキュメントなのになぜ…
そういう気遣いいらなかった。。。
ブラウザ上のGmailでは、PDFもGoogleドキュメントとして開くことができます。
ですので、内容共有として送付する場合や、
文字情報だけが重要ならPDFのままでも構わないと思います。
ただ、これでは困ることも。
私が一番困ったのが、コピペすると書式、フォントが崩れること。
いったんドキュメントに変換してからコピペしようとしてもいろいろ不具合が起きました。
windowsだとPDFからのコピペはなかなか厄介ですしね。
元々、Wordへの「書式ごとコピペ」を目的としてドキュメントを作っていたので
これが崩れてしまうならわざわざGASを使う意味がなくなってしまいます。
もう少しスマートに行けるのかもしれませんがとりあえず解決したからOK!としましょう。
同じように添付ファイル形式で躓いている方のお役に立てれば幸いです。