悩 なやみ箱 暮らしと日常の悩みを、手順で解決するサイト

スプレッドシートを毎回PDFでダウンロードしてフォルダに移すのが面倒

2026年10月時点
■ 先に結論

スプレッドシートの「拡張機能」→「Apps Script」に短いコードを貼ると、ファイルをPDFにしてドライブの指定フォルダへ直接保存できます。
決まった時刻に動かしたいときは、時間主導型トリガーを1つ登録します。

  1. 保存先フォルダのIDを控える
  2. 拡張機能 → Apps Script にコードを貼る
  3. 1回手で実行して承認する
    • 必要なとき編集画面で「実行」を押す
    • 定期的にトリガーを追加して時刻を決める
  4. フォルダに日付入りのPDFが届けば完了

手作業だと「ファイル」→「ダウンロード」→形式を選ぶ→パソコンに保存されたファイルを保存先へ自分で移す、と毎回同じ操作が続きます(ファイルを作成、表示、ダウンロードする)。

※2026年10月時点のGoogle公式ドキュメントに基づいています。

木の机の上の書類トレーに紙の束が収まり、横に目覚まし時計が置かれた絵

1保存先フォルダのIDを控える

ドライブで保存先のフォルダを開き、アドレス欄に出るフォルダのID(英数字の列)をコピーします(この見つけ方は記事の補足です)。IDが違うか、自分が開けないフォルダだと、実行時にエラーになります。
出典: Class DriveApp

2コードを貼る

  1. PDFにしたいスプレッドシートを開く
  2. 「拡張機能」 → 「Apps Script」を選ぶ
  3. 最初から入っているコードを消して下のコードを貼る
  4. 1行目にフォルダIDを入れ、「保存」を押す
const FOLDER_ID = 'ここにフォルダID'; // ← 手順1でコピーしたIDに置き換える

function savePdfToDrive() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const stamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyyMMdd_HHmm');
  const pdf = ss.getAs('application/pdf').setName(ss.getName() + '_' + stamp + '.pdf');
  DriveApp.getFolderById(FOLDER_ID).createFile(pdf);
}

getAs('application/pdf') がファイルの中身をPDFに変換し、createFile がフォルダに新しいファイルとして作るので、日時を名前に入れて区別します。
出典: Class Spreadsheet / Class Folder / Class Utilities / カスタム関数のクイックスタート / Class Session / コンテナにバインドされたスクリプト

31回手で実行して承認する

編集画面の関数プルダウン リストから savePdfToDrive を選び、「実行」を押します。初回は権限を求めるダイアログが出るので、自分のアカウントで許可します。ドライブなどのデータを扱うスクリプトでは「未確認」という警告画面が出ることがあります。その場合は「詳細」→「(プロジェクト名)に移動(安全ではありません)」を選び、許可します。自分で貼ったスクリプト以外は許可しないでください。Google Workspace アカウントの場合、管理者の承認が必要となる可能性があります。
出典: Google サービスの承認 / 会議でのセッションへの登録を作成する / Gmail と Google スプレッドシートでメールへの差し込みを作成する

4定期的に動かす

  1. 編集画面の左の「トリガー」を開く
  2. 右下の「トリガーを追加」を押す
  3. savePdfToDrive 用に、作成するトリガーのタイプ(時間主導型)を選択して構成する
  4. 「保存」を押す

指定した時刻ちょうどではなく、その後の1時間の中で動くことがあります。トリガーで失敗しても画面には出ず、Apps Scriptから失敗のまとめメールが届きます。トリガーは作った人の権限で動きます。止めるときは script.google.com の左の「マイ トリガー」で、対象の右のその他アイコンから「トリガーを削除」を選びます。
出典: インストール可能なトリガー

PDFができない時のチェックリスト