【Googleドキュメント】Apps Scriptでパスワード付きPDF出力!セキュアな配布

【Googleドキュメント】Apps Scriptでパスワード付きPDF出力!セキュアな配布
🛡️ 超解決

パスワード付きのPDFをGoogleドキュメントから直接出力したいと考えたことはありませんか。Googleドキュメントの標準機能ではPDFへのエクスポートは可能ですが、パスワードを設定する機能は用意されていません。そのため、機密性の高い文書を安全に配布するには別の方法が必要です。そこで役立つのがGoogle Apps Scriptです。外部のPDF暗号化APIを組み合わせることで、パスワード保護されたPDFを自動生成し、安全に配布できるようになります。この記事では、Apps Scriptを使ってパスワード付きPDFを出力する具体的な手順を詳しく解説します。

【要点】Apps Scriptと外部APIでGoogleドキュメントからパスワード付きPDFを生成する

  • Google Apps ScriptのPDF変換機能: ドキュメントをPDF形式のBlobとして取得することで、外部APIと連携できるようにします。
  • 外部暗号化APIの利用: PDF.coなどのAPIにPDFファイルを送信し、パスワードを設定して暗号化したPDFを受け取ります。
  • 自動化ワークフローの構築: トリガーを設定することで、ドキュメントの更新時に自動的にパスワード付きPDFを生成・保存できます。

ADVERTISEMENT

Google Apps Scriptでパスワード付きPDFを作成する概要

Google Apps Scriptは、Googleドキュメントをプログラムで操作できる強力なツールです。通常のエクスポート機能では設定できないパスワード保護も、外部のPDF暗号化サービスを組み合わせることで実現できます。この方法を使えば、機密文書を安全に共有したり、顧客にパスワード付きの資料を送付したりといった用途に活用できます。本記事では、外部APIとしてPDF.coを例に説明します。前提として、GoogleアカウントとPDF.coの無料アカウント(APIキー取得)が必要です。また、Apps Scriptの基本的な記述ができることを想定しています。

パスワード付きPDFを出力する具体的な手順

準備:PDF.coアカウントの作成とAPIキーの取得

  1. PDF.coにアクセスしてアカウント登録
    まず、PDF.coのWebサイト(https://pdf.co)にアクセスし、無料アカウントを作成します。登録にはメールアドレスが必要です。確認メールが届いたらリンクをクリックしてアカウントを有効化してください。
  2. APIキーをダッシュボードから発行
    ログイン後、ダッシュボードの「API Keys」セクションに移動します。「Create New Key」ボタンをクリックすると、APIキーが生成されます。このキーは後ほどスクリプト内で使用するため、安全な場所に保存しておいてください。キーは第三者に漏洩しないよう注意しましょう。

スクリプトエディタを開いてコードを記述

  1. Googleドキュメントでスクリプトエディタを起動
    パスワードを付けたいドキュメントを開き、メニューから「拡張機能」→「Apps Script」を選択します。スクリプトエディタが開いたら、プロジェクト名を「PDFPasswordProtector」などに設定しましょう。
  2. スクリプトコードを貼り付ける
    以下のコードをエディタにコピーして貼り付けます。なお、「YOUR_API_KEY」と「YOUR_DOCUMENT_ID」は実際の値に置き換えてください。ドキュメントIDはURLの「/d/」の後ろにある英数字の文字列です。
function generatePasswordProtectedPDF() {
  var docId = 'YOUR_DOCUMENT_ID';
  var password = 'your_password';
  var apiKey = 'YOUR_API_KEY';
  
  // ドキュメントをPDFとして取得
  var doc = DocumentApp.openById(docId);
  var pdfBlob = doc.getAs('application/pdf');
  
  // PDF.coの暗号化APIエンドポイント
  var url = 'https://api.pdf.co/v1/pdf/security/add';
  
  // マルチパートフォームデータを作成
  var payload = {
    'password': password,
    'async': false,
    'encrypt': true,
    'file': pdfBlob.setName('document.pdf').setContentType('application/pdf')
  };
  
  var options = {
    'method': 'post',
    'headers': {
      'x-api-key': apiKey
    },
    'payload': payload,
    'muteHttpExceptions': true
  };
  
  var response = UrlFetchApp.fetch(url, options);
  var result = JSON.parse(response.getContentText());
  
  if (result.error === false && result.url) {
    // 暗号化されたPDFをダウンロード
    var encryptedBlob = UrlFetchApp.fetch(result.url).getBlob();
    // Google Driveに保存
    DriveApp.createFile(encryptedBlob.setName('protected_'+doc.getName()+'.pdf'));
    Logger.log('パスワード付きPDFを作成しました: ' + encryptedBlob.getName());
  } else {
    Logger.log('エラー: ' + result.message);
  }
}

スクリプトの実行と確認

  1. スクリプトを保存して実行
    コードを貼り付けたら、保存ボタンをクリック(Ctrl+S)し、実行ボタン(▶)を押します。初回実行時には権限の承認画面が表示されます。「許可を確認」をクリックし、必要な権限(ドキュメントの表示、外部サービスへのアクセス、Driveへの保存など)を承認してください。
  2. 実行結果を確認
    スクリプトが正常に完了すると、Google Driveに「protected_元のファイル名.pdf」という名前のパスワード付きPDFが保存されます。PDFを開く際に設定したパスワード(コード内の’your_password’)が必要です。実行ログは「表示」→「ログ」で確認できます。

自動化の設定(トリガー)

  1. トリガーを追加する
    スクリプトエディタの左メニューから「トリガー」アイコンをクリックし、「トリガーを追加」を選択します。関数を「generatePasswordProtectedPDF」に設定し、イベントのソースを「時間主導型」または「ドキュメントの更新時」にします。例えば、毎日午前9時に実行するように設定すれば、定期的にパスワード付きPDFを生成できます。
  2. 権限の再承認
    トリガーを設定した後、再度権限承認が必要な場合があります。その際は画面の指示に従って承認してください。承認が完了すると、指定した時間またはイベントに応じて自動実行されるようになります。

スクリプト使用時の注意点とよくあるエラー

APIキーの安全な管理

スクリプト内にAPIキーを直接記述すると、他の人にコードを見られた際に漏洩するリスクがあります。推奨する方法は、スクリプトのプロパティにキーを保存することです。スクリプトエディタの「ファイル」→「プロジェクトのプロパティ」→「スクリプトのプロパティ」タブで「API_KEY」というキーを追加し、値を保存します。コード内では「PropertiesService.getScriptProperties().getProperty(‘API_KEY’)」で取得できます。

PDF.coの無料プランの制限

PDF.coの無料プランは1日50ファイルまで、1ファイル5MB以下の制限があります。大量の文書や大きなサイズのファイルを処理する場合は、有料プランへのアップグレードを検討してください。また、APIリクエストの回数制限を超えるとエラーが返ってきますので、エラーハンドリングで対応しましょう。

エラーハンドリングの実装

外部APIへのリクエストはネットワーク障害やタイムアウトの可能性があります。スクリプト内にtry…catch文を追加してエラーを補足し、エラー時にはメール通知を行うなどの対策をお勧めします。以下のコード例を参考にしてください。

try {
  // 上記のメインコード
} catch (e) {
  Logger.log('エラーが発生しました: ' + e.message);
  MailApp.sendEmail('your-email@example.com', 'PDF生成エラー', e.message);
}

パスワードの強度と管理

設定するパスワードは十分に強力なものを選びましょう。英大文字・小文字・数字・記号を含む8文字以上が推奨されます。また、パスワードをスクリプトに固定で書くとセキュリティリスクがあります。例えば、スクリプトのプロパティからパスワードを取得する、またはランダム生成して別の手段で共有する方法が安全です。

ADVERTISEMENT

手動でのパスワード設定との比較

項目 Apps Script + API 手動(Adobe Acrobatなど)
作業時間 数分(スクリプト実行のみ) 1ファイルあたり数十秒
自動化の可否 トリガー設定で完全自動化可能 手動操作が必要で自動化不可
コスト 無料枠内ならAPI利用料無料 ソフトウェア購入費用がかかる
セキュリティ HTTPS通信で暗号化、キー管理が必要 ローカル処理でデータ漏洩リスク低い

まとめ

この記事では、Google Apps Scriptと外部API(PDF.co)を組み合わせて、Googleドキュメントからパスワード付きPDFを出力する方法を解説しました。この自動化により、毎回手動で暗号化する手間を省き、安全な文書配布が実現します。さらに、トリガーを設定すればドキュメント更新のたびに自動生成されるワークフローも構築できます。例えば、見積書や契約書の自動生成とパスワード保護を組み合わせると、顧客への安全な納品が可能です。スクリプトをカスタマイズして、パスワードをランダム生成し、別途メールで送信する仕組みも作れます。ぜひ、実際の業務に取り入れてセキュアな文書配布を実現してみてください。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

SPONSORED