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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Google Apps Script

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

Q&A

解決済

2回答

2896閲覧

Google Apps Scriptでスプレッドシートを複数のシートをまとめて1つのPDFにしたい

hornowl

総合スコア22

Google Apps Script

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

0グッド

0クリップ

投稿2019/07/04 14:33

【前提】

スプレッドシートで作成した資料をGoogleAppsScriptでPDF化・メールに添付して送信までを行おうとしています。

スプレッドシート内には10枚のシートがあります。
そのうち1枚目と10枚目は非表示にしてあります。
PDF化したいのは2〜9枚目のみとなります。
印刷設定で「ワークブック」を選択してエクスポートしたのと同じ状態にしたいです。

【現在のコード】

色々参考に下記のように書きましたがシート1枚のみしかPDF化ができない状態です。

お知恵を貸していただけると助かります。
宜しくお願いします。

function send_pdf(){ //アクティブシートのIDとGoogleIDを取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var sheetID = sheet.getSheetId(); var key = ss.getId(); var token = ScriptApp.getOAuthToken(); //生成するPDFのオプション設定 var option = 'gid=' + sheetID + '&exportFormat=pdf' //ファイル形式 + '&format=pdf' //ファイル形式 + '&size=A4' //用紙サイズ + '&portrait=false' //用紙の向き + '&gridlines=false' //グリッド線 + '&fitw=false' //幅を合わせる + '&sheetnames=false' //シート名を上部に表示 + '&printtitle=false' //スプレッドシートのタイトルを上部に表示 + '&pagenumbers=false' //ページ番号 + '&fzr=false' //固定行の表示 + '&top_margin=0.00' //余白 + '&bottom_margin=0.00' //余白 + '&left_margin=0.00' //余白 + '&right_margin=0.00'; //余白 var url = "https://docs.google.com/spreadsheets/d/" + key + "/export?" + option; //PDF生成するURLをfetchする var pdf = UrlFetchApp.fetch(url, {headers: {'Authorization': 'Bearer ' + token}}).getBlob().setName("test" + ".pdf"); //作成したPDFファイルをメールに添付して送る GmailApp.sendEmail( '自分のメールアドレス', '件名', '本文', {attachments: [pdf]}//添付ファイル ); }

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

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

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

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

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

guest

回答2

0

PDF化に際して大した指定もないようですので、以下のようにしてファイル全体をPDFにすればよいのでは?

GAS

1function send_pdf(){ 2var ss = SpreadsheetApp.getActiveSpreadsheet(); 3var pdf = ss.getAs('application/pdf'); 4GmailApp.sendEmail( 5 '自分のメールアドレス', 6 '件名', 7 '本文', 8 {attachments: [pdf]}//添付ファイル 9 ); 10}

投稿2019/07/05 04:19

編集2019/07/05 04:37
hiroshi0240

総合スコア640

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

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

hornowl

2019/08/27 00:34

お礼が遅くなりましたが、ご回答ありがとうございました。 とても参考になりました。
guest

0

ベストアンサー

例えば下記のような修正はいかがでしょうか。

From

javascript

1var option = 'gid=' + sheetID 2 + '&exportFormat=pdf' //ファイル形式

To:

javascript

1var option = '&exportFormat=pdf' //ファイル形式
  • この修正ではもしもvar sheetID = sheet.getSheetId();を他で使用していないようですと削除することが可能です。

注意点

  • スプレッドシートをPDF形式として出力する場合、非表示にしているシートは出力されません。そのため、「スプレッドシート内には10枚のシートがあります。そのうち1枚目と10枚目は非表示にしてあります。PDF化したいのは2〜9枚目のみとなります。」の要件は上記の修正で達成できると思われます。

投稿2019/07/05 00:07

kisojin

総合スコア899

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

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

hornowl

2019/08/27 00:36

お礼が遅くなりましたが、ご回答ありがとうございました。 分かりやすい解説まで付けていただき、コレをヒントにやりたいことが実現できました。
kisojin

2019/08/28 22:44

無事解決できたとのことで安心しました。ご返事ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問