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

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

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

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

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

解決済

スプレッドシートで範囲を選択したセルだけPDF化する方法

ran_net
ran_net

総合スコア17

Google Apps Script

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

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

1回答

0評価

0クリップ

18222閲覧

投稿2018/12/14 06:55

前提・実現したいこと

スプレッドシート上で、セルの範囲を指定した部分だけをPDF化し保存したいです。

今の段階でできていること

  • シート全体をPDF化してGoogleドライブへ保存
  • データ値が入っているセルの範囲だけを選択した状態にする

今の状態は、テキストが入っているセルの範囲の選択はできているものの
PDF化を実行させても、選択されたセルの範囲ではなくシート全体がPDF化してしまいます。

該当のソースコード

gs

function chosepdf(){ //セルの範囲指定をする var ss = SpreadsheetApp.getActiveSpreadsheet(); // そのスプレッドシートにある最初のシートを取得 var sheet = ss.getSheets()[0]; //データ値を持つセルの範囲を指定(空白も含まれる) var range = SpreadsheetApp.getActiveSheet().getDataRange(); // そのシートにある A1:D10 のセル範囲を取得 //var range = sheet.getRange("B4:J61"); // そのセル範囲をアクティブに設定 range.activate(); } function myFunction(){ // マイドライブ直下に保存 var root= DriveApp.getRootFolder(); var folderid = root.getId(); // 現在開いているスプレッドシートを取得 var ss = SpreadsheetApp.getActiveSpreadsheet(); // 現在開いているスプレッドシートのIDを取得 var ssid = ss.getId(); // 現在開いているスプレッドシートのシートIDを取得 var sheetid = ss.getActiveSheet().getSheetId(); var range = SpreadsheetApp.getActiveSheet().getDataRange(); // そのセル範囲をアクティブに設定 range.activate(); // PDF作成関数 createPDF( folderid, ssid, sheetid,customer_name + "_"+ timestamp ); } var ss = SpreadsheetApp.getActiveSpreadsheet(); //ファイル名になるセルの位置 var customer_name = ss.getRange("A1").getValue(); // PDF作成関数 //引数は(folderid:保存先フォルダID, ssid:PDF化するスプレッドシートID, sheetid:PDF化するシートID, filename:PDFの名前) function createPDF(folderid, ssid, sheetid, filename){ //PDFファイルの保存先となるフォルダをフォルダIDで指定 var folder = DriveApp.getFolderById(folderid); // スプレッドシートをPDFにエクスポートするためのURL。このURLに色々なオプションを付けてPDFを作成 var url = "https://docs.google.com/spreadsheets/d/SSID/export?".replace("SSID", ssid); // PDF作成のオプションを指定 var opts = { exportFormat: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx format: "pdf", // ファイル形式の指定 pdf / csv / xls / xlsx size: "A4", // 用紙サイズの指定 legal / letter / A4 portrait: "false", // true → 縦向き、false → 横向き fitw: "true", // 幅を用紙に合わせるか sheetnames: "false", // シート名をPDF上部に表示するか printtitle: "false", // スプレッドシート名をPDF上部に表示するか pagenumbers: "false", // ページ番号の有無 gridlines: "false", // グリッドラインの表示有無 fzr: "false", // 固定行の表示有無 gid: sheetid // シートIDを指定 sheetidは引数で取得 }; var url_ext = []; // 上記のoptsのオプション名と値を「=」で繋げて配列url_extに格納 for( optName in opts ){ url_ext.push( optName + "=" + opts[optName] ); } // url_extの各要素を「&」で繋げる var options = url_ext.join("&"); // API使用のためのOAuth認証 var token = ScriptApp.getOAuthToken(); // PDF作成 var response = UrlFetchApp.fetch(url + options, { headers: { 'Authorization': 'Bearer ' + token } }); // var blob = response.getBlob().setName(filename + '.pdf'); //} // PDFを指定したフォルダに保存 folder.createFile(blob); } // タイムスタンプを返す関数 function getTimestamp () { var now = new Date(); var year = now.getYear(); var month = now.getMonth() + 1; var day = now.getDate(); var hour = now.getHours(); var min = now.getMinutes(); // var sec = now.getSeconds(); // return year + month + day + "_" + hour + min; }

プログラミング初心者で勉強中です。

セルの選択とPDF化がバラバラの動作になっている状態ですので
PDF化の際の、範囲の指定方法があれば教えていただきたいです。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

papinianus
papinianus

2018/12/14 08:11

このurlによるexportは、指定できるパラメータが明示的な文書になっていないのですが、多分できないように思います
ran_net
ran_net

2018/12/14 08:27

上記にあるurlによるexportでは、PDFにできないということでしょうか? 該当のソースコードで実行すると、ドライブにPDFはちゃんと保存されているのですが・・ 理解力がなくてすみません。。。。
papinianus
papinianus

2018/12/14 09:00

誤解を招いてもうしわけないです。記載のものは動作すると思います。シート単位では。ただ、領域選択みたいなパラメータを上手くやればできるかもしれないし、できないかもしれない、みたいなことについては、仕様をgoogleが開示していないので、今回のものはできないだろう、という意味です。
ran_net
ran_net

2018/12/17 00:08

そうなのですね・・ Googleが使用を開示してないとなると、どうしようもないですね。 ご意見ありがとうございました。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Google Apps Script

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

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。