GASで、スプレッドシートをPDF化する記事は大量に存在しましたが、一枚のシートを1ページのPDFに収めるようにサイズを調整してPDF化する方法の記事があまりなかったので記載しておきます。
その他のサイトと同様にまず、スプレッドシートの特定のシートをPDF化するには下記のように記載します。ただし、下記のようにするとシートの内容が途中で改ページ(次のページにいく)されてしまいます。
function createPdf(){
var folderId = "フォルダーID"; //ここにPDFを格納するフォルダIDを入れる
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId(); //スプレッドシートのIDを取得する
//PDF化するシートのタブ名の部分に実際のタブ名を入れて対象のシートのIDを取得する
var shId = ss.getSheetByName("PDF化するシートのタブ名").getSheetId();
var fileName = "テストファイル"; //PDFのファイル名
var baseUrl = "https://docs.google.com/spreadsheets/d/" + ssId + "/export?gid=" + shId;
var options = "&exportFormat=pdf&format=pdf"
+ "&size=A4" //用紙サイズ (A4)
+ "&portrait=true" //用紙の向き true: 縦向き / false: 横向き
+ "&fitw=true" //ページ幅を用紙にフィットさせるか true: フィットさせる / false: 原寸大
+ "&top_margin=0.50" //上の余白
+ "&right_margin=0.50" //右の余白
+ "&bottom_margin=0.50" //下の余白
+ "&left_margin=0.50" //左の余白
+ "&horizontal_alignment=CENTER" //水平方向の位置
+ "&vertical_alignment=TOP" //垂直方向の位置
+ "&printtitle=false" //スプレッドシート名の表示有無
+ "&sheetnames=false" //シート名の表示有無
+ "&gridlines=false" //グリッドラインの表示有無
+ "&fzr=false" //固定行の表示有無
+ "&fzc=false" //固定列の表示有無;
var url = baseUrl +options;
}
そこで、一枚のシートを1ページのPDFに収めるためにはscaleというオプションを使います。
function createPdf(){
var folderId = "フォルダーID"; //ここにPDFを格納するフォルダIDを入れる
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ssId = ss.getId(); //スプレッドシートのIDを取得する
//PDF化するシートのタブ名の部分に実際のタブ名を入れて対象のシートのIDを取得する
var shId = ss.getSheetByName("PDF化するシートのタブ名").getSheetId();
var fileName = "テストファイル"; //PDFのファイル名
var baseUrl = "https://docs.google.com/spreadsheets/d/" + ssId + "/export?gid=" + shId;
var options = "&exportFormat=pdf&format=pdf"
+ "&size=A4" //用紙サイズ (A4)
+ "&portrait=true" //用紙の向き true: 縦向き / false: 横向き
+ "&fitw=true" //ページ幅を用紙にフィットさせるか true: フィットさせる / false: 原寸大
+ "&top_margin=0.50" //上の余白
+ "&right_margin=0.50" //右の余白
+ "&bottom_margin=0.50" //下の余白
+ "&left_margin=0.50" //左の余白
+ "&horizontal_alignment=CENTER" //水平方向の位置
+ "&vertical_alignment=TOP" //垂直方向の位置
+ "&printtitle=false" //スプレッドシート名の表示有無
+ "&sheetnames=false" //シート名の表示有無
+ "&gridlines=false" //グリッドラインの表示有無
+ "&fzr=false" //固定行の表示有無
+ "&fzc=false" //固定列の表示有無
+ "&scale=4"; //【この行を追加!!】
var url = baseUrl +options;
}
scaleが4の場合はページに合わせてPDF化するという意味になります。ちなみに他に1 ~ 3がありますが、1が100%のサイズ(拡大縮小なし)、2が横幅に合わせる、3が高さに合わせるという意味になります。
また、スプレッドシートを丸ごとPDF化する方法についてはこちらをご覧ください
試してみてください。
コメントを書く