• 締切済み

[GAS]PDFを添付してメールを送信したい

Google Apps ScriptでSpreadSheetをPDFで添付してメールを送りたいです。 フォームからの入力時にPDFを添付した自動応答メールを送りたいと考えています。 そこで、Scriptを書いたのですが、ファイルを添付して送付する部分で失敗しているように見えます。 下記のScriptについてアドバイスを欲しいです。 実行時エラーはこちらです:『現在サーバーを使用できません。しばらくしてからもう一度試してください。 』 (※attchmentを外すと正常に動作します) Scriptは、該当のシートをpdfとして取得する部分~送信までです var Document = SpreadsheetApp.openById('xxxx'); var pdf = Document.getAs('application/pdf').getBytes(); var attachment = {fileName:'xxx.pdf',mimeType:'application/pdf',content:pdf}; // 送信先オプション var options = {}; if ( cc ) options.cc = cc; if ( attachment ) options.attachments = attachment; // メール送信 MailApp.sendEmail(to, subject, body, options); まだまだ未熟なので読みづらいかとは思いますが、 アドバイス頂けますと幸いです

みんなの回答

noname#247307
noname#247307
回答No.1

添付するファイル名などまで細かく指定する必要がないなら、単純にgetAsしたオブジェクトをそのままattachmentにつけて送ればいいと思いますよ。こんな感じ。 function sendPDF(){ var to = "メールアドレス"; var subject = "サブジェクト"; var body = "メールの本文"; var doc = SpreadsheetApp.getActiveSpreadsheet(); //とりあえず var pdf = doc.getAs('application/pdf'); var options = {}; options.attachments = pdf; MailApp.sendEmail(to, subject, body, options); }

関連するQ&A

  • google apps scriptでメール送信

    google apps scriptでスプレッドシートを添付ファイルで送る方法をお教えください。 google apps scriptで SpreadsheetApp.getActiveSheet(); として取得しセルにデータを書き込んだスプレッドシートをEメール発信したいです。 sendEmail(送付先アドレス, タイトル, 内容, options); とすると思いますが、optionsの書き方がわかりません。 よろしくお願いします。 2012 Sep. 25.

  • GASを使った自動返信メールの作成について

    Google フォーム を使って、下記Aのお客様からのお問い合わせフォームに対する自動返信メールを作成したいのですが、Bのような結果になってしまいます。Bに記載された4行を非表示にするにはどのようにすれば良いのでしょうか。また、Google フォーム を使った自動返信のお問い合わせメールを作成するためのGoogle Apps Script について理解するための良書などありましたら、ご紹介頂ければ幸いです。よろしくお願い致します。 A(得たい結果) _______________________________________________________________________________ 山田 太郎 様 お問い合わせありがとうございます。 ------------------------------------------------------------ 【お問い合わせ内容】 テスト・テスト・テスト ------------------------------------------------------------ 後ほど担当者よりご連絡させていただきます。 B(思わしくない結果) _______________________________________________________________________________ 山田 太郎 様 お問い合わせありがとうございます。 ------------------------------------------------------------ 【お名前】 (←非表示にしたい) 山田 太郎 (←非表示にしたい) 【メールアドレス】 (←非表示にしたい) ***@***.ocn.ne.jp (←非表示にしたい) 【お問い合わせ内容】 テスト・テスト・テスト ------------------------------------------------------------ 後ほど担当者よりご連絡させていただきます。 [Apps Script に記述したコード(参考サイト:https://liapoc.com/new-google-form.html)] function sendMailGoogleForm() { Logger.log('sendMailGoogleForm() debug start'); //------------------------------------------------------------ // 設定エリアここから //------------------------------------------------------------ // 件名、本文、フッター var subject = "[お問い合わせありがとうございます。]"; var body = "お問い合わせありがとうございます。\n\n" +"------------------------------------------------------------\n"; var footer = "------------------------------------------------------------\n\n" +"後ほど担当者よりご連絡させていただきます。"; // 入力カラム名の指定 var NAME_COL_NAME = 'お名前'; var MAIL_COL_NAME = 'メールアドレス'; // メール送信先 var admin = "***@gmail.com"; // 管理者(必須) var sendername = "web担当者備忘録";//送信者名(必須) var cc = ""; // Cc: var bcc = admin; // Bcc: var reply = admin; // Reply-To: var to = ""; // To: (入力者のアドレスが自動で入ります) //------------------------------------------------------------ // 設定エリアここまで //------------------------------------------------------------ try{ // スプレッドシートの操作 var sheet = SpreadsheetApp.getActiveSheet(); var rows = sheet.getLastRow(); var cols = sheet.getLastColumn(); var rg = sheet.getDataRange(); Logger.log("rows="+rows+" cols="+cols); // メール件名・本文作成と送信先メールアドレス取得 for (var i = 1; i <= cols; i++ ) { var col_name = rg.getCell(1, i).getValue(); // カラム名 var col_value = rg.getCell(rows, i).getValue(); // 入力値 if (col_name === "タイムスタンプ"){ continue; } body += "【"+col_name+"】\n"; body += col_value + "\n\n"; if ( col_name === NAME_COL_NAME ) { body = col_value+" 様\n\n"+body; } if ( col_name === MAIL_COL_NAME ) { to = col_value; } } body += footer; // 送信先オプション var options = {name: sendername}; if ( cc ) options.cc = cc; if ( bcc ) options.bcc = bcc; if ( reply ) options.replyTo = reply; // メール送信 if ( to ) { MailApp.sendEmail(to, subject, body, options); }else{ MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body); } }catch(e){ MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message); } } [スプレッドシート] A B C   D タイムスタンプ    お名前   メールアドレス   お問い合わせ内容 2022/09/11 18:47:12  山田 太郎 ***@***.ocn.ne.jp テスト・テスト・テスト

  • PDFを添付してメールの送信ができません

    Outlook2007を使用しています。 資料を送る目的で資料をPDFにしました。 大きさが1897KBになったこの資料をMailに添付して送信しましたが 中々送信しきれません。 そこでこのPDFを圧縮したところ1710KBになりこれを送信しましたが 同じ状況です。 策を伝授してください。 よろしくお願いします。 以上

  • PDFをメールで送信できない

    資料をスキャンし、PDFをメールに添付送信したいのですが、送信エラーになってしまいます。PDFの容量が大きいから送信できないようですが、どうすれば送信できますか? ※OKWaveより補足:「ブラザー製品」についての質問です。

  • スマートフォンからのPDFファイル添付メール送信

     ドコモのアンドロイドのスマートフォンにてWEBサイトからPDFファイルをダウンロードし、そのPDFファイルをドコモメールに添付して、送信相手にメール送信することは可能なのでしょうか?  ドコモメールの取説を見る限りでは、写真画像等は添付できるようですが、PDFファイル等については説明が見当たらず、その可否が確認できません。  何卒、ご教示頂きたく、宜しくお願い致します。

  • mailがpdf添付をすると落ちるんです

    Mac OS 10.3.9でmailを使用しております。最近になってpdfファイルを添付して送信すると送信される前に落ちてしまいます。もう一度立ち上げると普通に送信されるのですが。jpegやaiなら問題なく送信出来るのですがpdfの時だけ落ちるんです。色々調べたのですが原因が分かりません。どなたか助けて下さい、よろしくお願いいたします。

    • 締切済み
    • Mac
  • Googleクラウドスクリプティングでメール

    JavaScriptもGoogleApsも全くの初心者なのですが、業務で必要なため勉強し始めました。一人では行き詰ってしまいまして、どうかお力をお貸しください。 GoogleドキュメントのスプレッドシートのセルをGmailで送信しようとしています。結果は選択したセル範囲ではなく、"Sheet"という文字列がメールされてしまいます。どこがおかしいでしょうか。。 function myFunction() { var mySheet = SpreadsheetApp.getActiveSheet(); mySheet.getRange("D2:D6"); var mySubject = "件名"; var myBody = mySheet; var mailto = "メールアドレス"; GmailApp.sendEmail(mailto, mySubject, myBody ); } ※Googleクラウドスクリプティングのカテゴリがなくこちらで質問させていただきましたが、検討違いでしたら申し訳ございません。

  • PrimoPDFでPDF化したデータを添付してメール送信する際。

    PrimoPDFでPDF化したデータを添付してメール送信する際。 職場の上司に、仕事に関するデータを、メールに添付して取引先に送信できるか試してくれ、と頼まれました。 しかも金をかけずに。 そこで、職場のCADソフト(土木測量のCADです)で作成したデータを、PrimoPDFなどのPDFに変換し作成できるソフトでPDF化し、そのPDF化したデータをメールに添付して送信しようと思っています。 そこでご教授いただきたいのですが、この時、この添付メールを受け取った方(取引先になります)は、Adobe Readerで見ることになっても文字化けしたりするのでしょうか? また弊社と同じCADのソフトを取引先も使用しているとして、一度、上記のようにPDF化したCADデータを取引先が、PDFファイルからそのCADソフトのデータに変換できた場合(元のCADデータに戻した場合)、取引先は綺麗に見ることができるんでしょうか?? 何を質問したいのかというと、PDFを添付してメールをすればその添付データは、文字化けなどが原因で送信の際に劣化するんじゃないかということなんです。 説明が下手で申し訳ないんですが、上記の質問にお答えいただけるようよろしくお願いします。

  • Googleフォームのsendmailについて

    いつもお世話になっております。(知識がなく「カテゴリ」をPHPにしております。) 早速ではございますが,Googleフォームを使って申し込みサイトを設置しようかと思っております。申し込み頂いた方へは,その内容を保存しておいて頂くためのメールを自動的に送るようにしたいと考え,「Googleフォーム」「sendmail」で検索したところ,以下のサイトがヒットいたしました。 http://creazy.net/2011/03/google_form_mailsend.html これとまったく同じにGoogleフォームを作成し,スクリプトを設置したところ,私が考えているものが送られてきました。しかし,このスクリプトは,「お名前」「メールアドレス」「件名」となっており,私が実際に作成しているGoogleフォームの項目とは異なります。 私の作成している項目は以下の通りです(Googleフォーム上の質問項目と全く同じ)。 お名前 メールアドレス アドレスの再入力 所属(リストから選択)*6項目(リスト)ございます。 〇〇の会員ですか?(リストからの選択)*都合により〇〇と表示 これら以降もう少しございますが,省略いたします(テキスト入力あるいはリストからの選択のみです)。 返信用メール本文には,既存のスクリプトは最大限活用して,つぎのように示したいです。 ************************* ▲▲ 様 申し込みありがとうございます。(→これは該当の日本語を書き換えれば良いのかなと考えます) ------------------------------------------------------------ 【タイムスタンプ】 Tue Sep 01 2015 14:43:09 GMT+0900 (JST) 【お名前】 ▲▲ 【メールアドレス】 ××××@gmail.com 【アドレスの再入力】 ××××@gmail.com 【所属】 〇〇(リストの中から1つ表示される) 【〇〇の会員ですか?】 ◆◆(リストの中から1つ表示される) ------------------------------------------------------------ 後ほど担当者よりご連絡させていただきます。 ************************* 上記のサイトには以下のようなスクリプトが提示されておりますが,なにせ,私には全く知識がなく,下記をどのように修正すれば私のGoogleフォームで機能するのか皆目見当が付きません。 専門家の皆様,この内容の知識をお持ちの皆様,以下のスクリプトを私のフォームで動くように加筆修正頂けますでしょうか。ご多忙のところ申し訳ございませんが,ぜひお願いいたします。 function sendMailFromForm() { Logger.log('sendMailFromForm() debug start'); //------------------------------------------------------------ // 設定エリアここから //------------------------------------------------------------ // 件名、本文、フッター var subject = "[お問い合わせ]"; var body = "お問い合わせありがとうございます。\n\n" + "------------------------------------------------------------\n"; var footer = "------------------------------------------------------------\n\n" + "後ほど担当者よりご連絡させていただきます。"; // 入力カラム名の指定 var NAME_COL_NAME = 'お名前'; var MAIL_COL_NAME = 'メールアドレス'; var SUBJ_COL_NAME = '件名'; // メール送信先 var admin = "admin@example.com"; // 管理者(必須) var cc = ""; // Cc: var bcc = admin; // Bcc: var reply = admin; // Reply-To: var to = ""; // To: (入力者のアドレスが自動で入ります) //------------------------------------------------------------ // 設定エリアここまで //------------------------------------------------------------ try{ // スプレッドシートの操作 var sh = SpreadsheetApp.getActiveSheet(); var rows = sh.getLastRow(); var cols = sh.getLastColumn(); var rg = sh.getDataRange(); Logger.log("rows="+rows+" cols="+cols); // メール件名・本文作成と送信先メールアドレス取得 for (var j = 1; j <= cols; j++ ) { var col_name = rg.getCell(1, j).getValue(); // カラム名 var col_value = rg.getCell(rows, j).getValue(); // 入力値 body += "【"+col_name+"】\n"; body += col_value + "\n\n"; if ( col_name === NAME_COL_NAME ) { body = col_value+" 様\n\n"+body; } if ( col_name === MAIL_COL_NAME ) { to = col_value; } if ( col_name === SUBJ_COL_NAME ) { subject += col_value; } } body += footer; // 送信先オプション var options = {}; if ( cc ) options.cc = cc; if ( bcc ) options.bcc = bcc; if ( reply ) options.replyTo = reply; // メール送信 if ( to ) { MailApp.sendEmail(to, subject, body, options); }else{ MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body); } }catch(e){ MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message); } }

    • ベストアンサー
    • PHP
  • エクセルでファイルをPDF化してメール送信する件

    2013エクセルで作成したファイル拡張子xlsmをPDFファイルに変換して電子メールにて添付ファイルとして送信する際の質問です。エクセルの機能としてファイル→オプション→リボンのユーザー設定よりコマンドの選択のすべてのコマンドより「PDF形式の添付ファイルとして電子メールで送信」を追加してそのリボンを実行させるとPDFファイルが添付されたメール画面が表示しますが当該リボンをマクロ記録をして、そのマクロを実行したところPDFの拡張子のファイルが添付されなくxlsmファイルが添付されます。望みのPDFファイルを添付させるマクロを作りたいのですが、どなたかご教授ください。

専門家に質問してみよう