LoginSignup
5
7

More than 3 years have passed since last update.

GAS スプレッドシートをPDFに変換してGoogleDriveに保存する(シート単位)

Last updated at Posted at 2020-06-07

この記事の説明

GASを使って、スプレッドシートをPDFに変換する処理を記述する際の手順です。

PDF化してDriveに保存する

スプレッドシートでファイルをエクスポートするには、下記のURLにアクセスすることで出来ます。
URLに、クエリストリングでパラメータを渡すことで、変換フォーマットや変換するシートを指定します。

変換には認証が必要です。

1. エクスポートURL

"https://docs.google.com/spreadsheets/d/[スプレッドシートID]/export"

  • クエリストリング

    • ?exportFormat=pdf
  • シートを指定するには?

    • クエリストリングgidにシートIDを渡します。
    • ?gid=[シートID]
  • シートIDとは?

    • スプレッドシートの各シートには固有のidが振られています。下図のようにURLから取得できます。

image.png

2. 認証

ファイルへのアクセス権を証明するために、ScriptApp.getOAuthToken();でトークンを取得して、そのトークンを使って認証します。
今回はBearer認証を使います。


  var url = "https://docs.google.com/spreadsheets/d/" + QuoteStId + "/export?exportFormat=pdf&gid=SID".replace("SID",stId);
  var token = ScriptApp.getOAuthToken();
  var response = UrlFetchApp.fetch(url,{
    headers:{
      "Authorization" : "Bearer "+ token
    }
  });

3. PDFをGoogleDriveに保存する。

urlfetchの戻り値の中のblobを使って、DriveAppのcreateFileメソッドを使ってドライブに保存します。

  var filename = "ファイル名"
  var blob = response.getBlob().setName(filename);
  var folder = DriveApp.getFolderById("GoogleDriveに作成した保存フォルダのID");
  var file = folder.createFile(blob);

4. GASコードまとめ


//PDF化
  var url = "https://docs.google.com/spreadsheets/d/" + QuoteStId + "/export?exportFormat=pdf&gid=SID".replace("SID",stId);
  var token = ScriptApp.getOAuthToken();
  var response = UrlFetchApp.fetch(url,{
    headers:{
      "Authorization" : "Bearer "+ token
    }

  //PDFファイルをGoogleドライブに保存する処理
  var filename = "ファイルネーム"
  var blob = response.getBlob().setName(filename);
  var folder = DriveApp.getFolderById("GoogleDriveに作成した保存フォルダのID");
  var file = folder.createFile(blob);

参考

GASを使った認可パターン
https://medium.com/@gw_cule/gas%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E8%AA%8D%E5%8F%AF%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-67f195d7a425

Bearer認証について
https://qiita.com/h_tyokinuhata/items/ab8e0337085997be04b1

[Google Apps Script]認証が必要なウェブアプリケーションを外部から実行する
https://www.ka-net.org/blog/?p=12258

GASを使ってGoogle Drive内にあるファイルのダウンロードURLからコンテンツを取得したい
https://qiita.com/tanaike/items/9fd1294647e2181c7765

注意

  • PDF化したときに空白ページが紛れてしまう
    • スプレッドシートのPDF化は何故か未使用セルの部分までPDF化されてしまい、PDFの最終ページに空白ページが紛れてしまうことがある。この場合は元となるスプレッドシートの未使用領域のセルを削除しておくと良いです。
5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7