質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

3710閲覧

PDFをスプレッドシートからGASを使ってメールで送信したい

10-mo

総合スコア21

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2021/09/05 00:28

昨日ご質問させていただいて、Googleフォームの「送信」をトリガーにメールを送ることができました。ありがとうございました!

ただ、一つ解決できないことがありまして、PDFの送信です。エラーが出てしまいます。
流れは…

Googleフォームからスプレッドシートにデータを集計

フォームの「送信」をトリガーにメール送信

・入力したデータがメールで送信される
・スプレッドシートにデータが集計される

フォームではPDFを送信することも可能なのですが、それだとエラーが発生します。挿入部分がダメなのか、それともそもそもこのコードだとダメなのか分かりません。
ご教示ください。よろしくお願いいたします。

エラーコード Exception: DriveApp オブジェクトでの getFileById メソッドまたはプロパティの取得中に予期しないエラーが発生しました。 at sendEmails(コード:25:30)
コード function sendEmails() { var sheet = SpreadsheetApp.openById("idを入力するところ").getSheetByName("反映"); var EMAIL_SENT = "送信OK!"; var lastrow = sheet.getLastRow(); var lastcolumn = sheet.getLastColumn(); var dataRange = sheet.getRange(2, 2,lastrow-1,lastcolumn-1) var data = dataRange.getValues(); for (var i = 0; i < data.length; ++i) { var row = data[i]; var emailAddress = row[0]; //B列 var message = row[2]; //D列 var emailSent = row[4]; //F列 //「送信OK!」の場合は無視する if (row[4] === "送信OK!") { continue } if (emailSent != EMAIL_SENT) { var subject = row[1];//C列 var options = row[3];//E列 //オプションで添付ファイルを設定する var attachImg = DriveApp.getFileById("ドライブ内").getBlob(); var options = { "attachments":attachImg, }; MailApp.sendEmail(emailAddress, subject, message); sheet.getRange(2 + i,lastcolumn).setValue(EMAIL_SENT); SpreadsheetApp.flush(); } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まず、

GAS

1var attachImg = DriveApp.getFileById("ドライブ内").getBlob(); 2```のところでエラーになっていると思います。 3**getFileById**に**ドライブ内**と入力していますが、名前ではなくファイルのIDを指定します。 4https://drive.google.com/file/d/**ここの部分がIDになります**/view 5 6そして、添付ファイルを送信するのでしたら以下の部分に**options**を追加してやる必要があると思います。 7```GAS 8MailApp.sendEmail(emailAddress, subject, message);

こちらに変更する必要があると思います。

GAS

1MailApp.sendEmail(emailAddress, subject, message, options);

投稿2021/09/05 21:18

fake_shibe

総合スコア806

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

10-mo

2021/09/07 01:11 編集

fake_shibeさん ご教示ありがとうございます!早速試してみたところ、エラーが発生してしまいました。 Exception: DriveApp.File オブジェクトでの getBlob メソッドまたはプロパティの取得中に予期しないエラーが発生しました。 at sendEmails(コード:17:119)
fake_shibe

2021/09/06 21:33

やっぱり、 DriveApp.getFileById("ドライブ内")としているところがエラーになっていると思います。 添付したいファイル(PDFファイル)を新しいウィンドウで開いて頂き、以下のようなURLがでますので https://drive.google.com/file/d/1P2j_Aw5FYhJYjoNtgtuof7-K6G2BqUhe/view 1P2j_Aw5FYhJYjoNtgtuof7-K6G2BqUheの部分にあたる場所を、 DriveApp.getFileById("1P2j_Aw5FYhJYjoNtgtuof7-K6G2BqUhe").getBlob(); 上記のようにして頂けると成功すると思います。
10-mo

2021/09/07 01:12

fake_shibeさん 度々ありがとうございます。ファイル単体で指定するということですね。これで解決しました。ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問