デスクワークを超絶快適にするおすすめギアたち

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

【当サイトはプロモーションを含んでいます】

目次

この記事の説明

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

この記事は自分の備忘録をリライト中です。

PDF化してDriveに保存する

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

エクスポートURL

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

  • クエリストリング
    • ?exportFormat=pdf
  • シートを指定するには?
    • クエリストリングgidにシートIDを渡します。
    • ?gid=[シートID]
  • シートIDとは?
    • スプレッドシートの各シートには固有のidが振られています。下図のようにURLから取得できます。
シートID

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);

注意

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