GASでスプレッドシートをPDFに変換する方法!getAsメソッドの使い方を解説

2021年12月17日

Google Apps Script(GAS)ではスプレッドシートをPDFに変換することができます。

PDFに変換すれば、メールやローカルファイルとしても扱うことができるようになります。

そこで、スプレッドシートをPDFに変換するGASのgetAsメソッドについて解説します。

スプレッドシートをPDFとして保存

Googleのスプレッドシートはクラウドの表計算アプリで、パソコンのブラウザで編集できてとても便利です。

さらにスプレッドシートはPDFとしてファイルをダウンロードする機能も備わっています。

PDFとして保存することで、メールなどで共有することができます。

スプレッドシートはメニューからPDFとしてダウンロード可能

パソコンやスマホのローカルファイルとして利用でき、PDFなので閲覧もしやすいメリットがあります。

GASでスプレッドシートをPDFに変換可能

実はスプレッドシートをPDFに変換できるのはパソコンでのブラウザ操作だけではありません。

グーグルが提供するスクリプトサービスであるGoogle Apps Script(GAS)でもPDF変換が可能です。

GASはトリガー実行機能があり、ユーザーの任意のタイミングやスケジュール登録して実行できます。

スプレッドシートの数値レポートをPDFに変換し、毎週決まったタイミングで自動メール送信するといった自動化が可能です。

PDFに変換するgetAsメソッド

Google Apps Script(GAS)でスプレッドシートをPDFに変換するメソッドとして、getAsメソッドがあります。

Spreadsheet.getAs('application/pdf’)

getAsメソッドはスプレッドシートのオブジェクトに対して実行します。

引数にはどういったファイル形式に変換するか選択することができます。

PDFに変換したい場合には、getAsメソッドの引数を「application/pdf」を指定します。

スプレッドシートに存在するシートのSheetオブジェクトではgetAsメソッドは実行できないです。

スプレッドシートのオブジェクトに対してgetAsメソッドを実行するよう注意しましょう。

スプレッドシートをPDFに変換するGASサンプルコード

実際にGoogle Apps Script(GAS)でスプレッドシートをPDFに変換する方法を説明します。

今回、下記のようなスプレッドシートをGASでPDFに変換するスクリプトを用意します。

Google Apps Script(GAS)でPDFに変換するスプレッドシート

スプレッドシートには「リスト」シートと「生成クイズ」シートの2つがあり、両方のシートがPDFページとして生成されます。

スプレッドシートをPDFとして変換し、Googleドライブに保存するGASスクリプトは以下の通りです。

Google Apps Script(GAS)でスプレッドシートをPDFファイルとしてGoogleドライブに保存するサンプルコード
function transformPdf() {
  //コンテナバインドで紐付いたスプレッドシートのアクティブなスプレッドシートを取得
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  //PDFとしてgetAsメソッドでblob形式で取得
  let pdf = ss.getAs('application/pdf');
  //pdfファイルの名前を設定
  pdf.setName("スプレッドシートPDF変換_複数シート");
  //GoogleドライブにPDFに変換したデータを保存
  DriveApp.createFile(pdf); 
}

GASサンプルコードを実行すると、Googleドライブに前述したスプレッドシートのPDFファイルが保存されます。

Google Apps Script(GAS)でスプレッドシートをPDFに変換した結果

スプレッドシートオブジェクトに対して、PDFファイルに変換しているため、スプレッドシートに存在する2つのシートがPDFに表示されています。

Googleドライブ上でPDFファイルで開くことができ、PDFとしてダウンロードすることも可能です。

スプレッドシートの個別シートをPDFにする場合は?

スプレッドシートをPDFに変換する場合に、スプレッドシートの全てのシートではなく、個別のシートのみをPDF化したいニーズもあります。

しかし、Google Apps Script(GAS)のPDF形式のBlobを取得するgeAsメソッドは、Spreadsheetオブジェクトでしか実行できません。

個別のシートを取得したsheetオブジェクトではgetAsメソッドが実行できないため、先ほどのサンプルコードを少し修正したぐらいでは実現できません。

もし、個別シートのみをPDF化したい場合は、以下の処理をGASで実装します。

  1. スプレッドシートから取得したい特定シートを取得
  2. 新しいスプレッドシートのファイルを作成
  3. 新しいスプレッドシートに1の特定シートをコピー
  4. 新しいスプレッドシートで初期作成されたシートを削除
  5. 新しいスプレッドシートをPDF変換
スプレッドシートの特定シートのみをPDFとしてファイルをGoogleドライブに保存するGoogle Apps Script(GAS)サンプルコード
function transformsSheetToPdf() {
  //コンテナバインドで紐付いたスプレッドシートでPDF化したいシートを取得
  let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('リスト');
  //スプレッドシートの個別シートをPDF化するために新規のスプレッドシートを作成
  let newSs = SpreadsheetApp.create("個別新規シート");
  //PDF化したい個別シートを新規作成したスプレッドシートにコピー
  ss.copyTo(newSs);
  //スプレッドシート新規作成でデフォルト作成されるシートを削除
  newSs.deleteSheet(newSs.getSheets()[0]);
  //PDFとしてgetAsメソッドでblob形式で取得
  let pdf = newSs.getAs('application/pdf');
  //pdfファイルの名前を設定
  pdf.setName("スプレッドシートPDF変換_個別シート");
  //GoogleドライブにPDFに変換したデータを保存
  DriveApp.createFile(pdf); 
}

新規のスプレッドシートを新たに準備して、そこに個別シート1枚のみの状態にし、getAsメソッドでPDFファイルを取得します。

こうすることで、スプレッドシート内の個別シートのみをPDF化することが可能です。

スプレッドシートの特定シートのみをGoogle Apps Script(GAS)でPDFに変換した結果

やや複雑なGASスクリプトになりますが、便利なので、ぜひ試してみてください。

まとめ・終わりに

今回、スプレッドシートをGoogle Apps Script(GAS)でPDFファイルに変換する方法を紹介しました。

スプレッドシートはブラウザで操作できて便利ですが、数値レポートとして提出等必要な場合にPDFとして用意したいニーズは強いです。

スプレッドシートの画面上でもファイルメニューからPDFとしてファイル保存はできますが、いちいち対応するのは手間がかかります。

GASにはgetAsメソッドが用意されており、スプレッドシートを簡単にPDFファイルにすることができます。

さらに、PDFファイルに変換後、メールで送るGASスクリプトを用意すれば、PDFレポートの生成と送付が自動化可能です。

ぜひ、業務効率化のため、スプレッドシート→PDFの変換が求められることも多いので、ぜひGASで自動化しましょう。