Drive変換後の保存先ミスを実行前に発見|GASでファイル変換計画をdry-run監査

Drive変換後の保存先ミスを実行前に発見|GASでファイル変換計画をdry-run監査

Gasおじ|GoogleアカウントをAIエージェント化

Gasおじ|GoogleアカウントをAIエージェント化

Drive上のファイルをPDFなどへ変換して整理するとき、怖いのは「変換できない形式だった」「保存先を取り違えた」「同名ファイルを増やした」と実行後に気づくことです。この記事では、ファイルを変換せず、対象・変換可否・出力予定名だけを一覧化する無料のGASを紹介します。

先に知っておきたいこと

  • 元ファイルの内容、共有設定、フォルダ構成は変更しません。
  • 指定フォルダ直下だけを確認し、サブフォルダは走査しません。
  • Googleドキュメント、スプレッドシート、スライドをPDF変換候補として判定します。
  • 実際の変換やファイル作成は行わないdry-run専用です。

準備するシート

スプレッドシートに `Config` と `ConversionPlan` の2枚を作ります。

  • `Config!A1`: `folderId`
  • `Config!B1`: 確認対象フォルダのID
  • `ConversionPlan`: スクリプトが確認結果を書き出すシート

最初はコピーした検証用フォルダで試してください。フォルダIDはDrive URLの `/folders/` より後ろの文字列です。

コピーして使える最小コード

const DRY_RUN = true;

function auditDriveConversionPlanFree() {
  if (DRY_RUN !== true) {
    throw new Error('この無料例はDRY_RUN=trueでのみ実行できます');
  }

  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const config = spreadsheet.getSheetByName('Config');
  const output = spreadsheet.getSheetByName('ConversionPlan');
  if (!config || !output) {
    throw new Error('Config と ConversionPlan シートを用意してください');
  }

  const folderId = String(config.getRange('B1').getDisplayValue()).trim();
  if (!/^[A-Za-z0-9_-]{10,}$/.test(folderId)) {
    throw new Error('Config!B1 のフォルダIDを確認してください');
  }

  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFiles();
  const supported = new Set([
    MimeType.GOOGLE_DOCS,
    MimeType.GOOGLE_SHEETS,
    MimeType.GOOGLE_SLIDES
  ]);
  const rows = [];
  const plannedNames = new Set();
  const limit = 200;

  while (files.hasNext() && rows.length < limit) {
    const file = files.next();
    const sourceName = file.getName();
    const mimeType = file.getMimeType();
    const outputName = sourceName.replace(/\.[^.]+$/, '') + '.pdf';
    const duplicatePlan = plannedNames.has(outputName);
    plannedNames.add(outputName);

    rows.push([
      sourceName,
      mimeType,
      supported.has(mimeType) ? '変換候補' : '対象外',
      outputName,
      duplicatePlan ? '同名予定あり' : 'OK'
    ]);
  }

  output.clearContents();
  output.getRange(1, 1, 1, 5).setValues([[
    '元ファイル名', 'MIMEタイプ', '判定', '出力予定名', '重複確認'
  ]]);
  if (rows.length > 0) {
    output.getRange(2, 1, rows.length, 5).setValues(rows);
  }
  console.log(JSON.stringify({
    dryRun: true,
    checked: rows.length,
    truncated: files.hasNext(),
    sourceFolderName: folder.getName()
  }));
}

実行手順

1. 検証用スプレッドシートの「拡張機能」からApps Scriptを開きます。

2. コードを貼り付け、`Config!B1` に検証用フォルダIDを入力します。

3. `auditDriveConversionPlanFree` を実行し、権限表示を確認します。

4. `ConversionPlan` の「対象外」「同名予定あり」を先に解消します。

5. 実行ログの `checked` と `truncated` を確認します。

失敗しやすい点と停止条件

  • フォルダへアクセスできない場合は、IDと実行ユーザーの権限を確認して停止します。
  • 201件以上ある場合は `truncated: true` になります。対象を小さなフォルダへ分けて再確認します。
  • 同じ出力予定名がある場合は、自動上書きせず命名規則を決めます。
  • Microsoft Office、画像、動画などはこの例では対象外です。
  • ログにはファイル本文や共有相手のメールアドレスを出しません。

この無料例で行わないこと

このコードは変換計画の確認だけを行います。PDF生成、元ファイル削除、別フォルダへの移動、定期実行、自動共有は行いません。実運用へ広げる場合も、少量のコピー環境、作成上限、重複時の停止、作成ログを先に設計してください。

まとめ

Drive整理は、いきなり変換するより先に「何を、何へ、どの名前で変換するか」を一覧にすると事故を減らせます。まずdry-run結果で対象外形式と同名予定を確認し、元データを変えない状態で計画を固めてください。

DriveFileList Pro(Driveファイル一覧化GAS)の詳細を見る

GasおじのTips商品一覧を見る

※学習・検証用の例です。実データへ適用する前にコピー環境で確認してください。Google公式・Google公認の商品ではありません。


あなたも記事の投稿・販売を
始めてみませんか?

Tipsなら簡単に記事を販売できます!
登録無料で始められます!

Tipsなら、無料ですぐに記事の販売をはじめることができます Tipsの詳細はこちら
 

この記事のライター

Gasおじ|GoogleアカウントをAIエージェント化

おう、Gasおじだ。 AIツールとSaaSに散々突っ込んで遠回りした結果、最後に強かったのは「今あるGoogleアカウント」だった。 今ではAIエージェントであらゆるタスクを自動化して無双してるぞ。 GAS、スプレッドシート、フォーム、Gmail、AIエージェントを組み合わせれば、個人でも小さな会社でも、手作業だらけの業務はかなり自動化できる。 ここでは机上のAI論じゃなく、現場で動くテンプレ、コード、手順だけを置いていくぞ。 高いツールを増やす前に、まずお前さんのGoogleアカウントを仕事するエージェントに変えようじゃないか。

このライターが書いた他の記事

  • Gmailの定型連絡を「送信せず」まとめて下書き化する|Gmail下書きテンプレGAS Pro

    ¥2,980
    1 %獲得
    (29 円相当)
  • GASのtry-catch入門|元データを守るエラー処理とログの実装例

  • Gasおじ式 X投稿キュー自動実行GAS Pro|危ない時だけ止まる

    ¥2,980
    1 %獲得
    (29 円相当)

関連のおすすめ記事

  • Gmailの定型連絡を「送信せず」まとめて下書き化する|Gmail下書きテンプレGAS Pro

    ¥2,980
    1 %獲得
    (29 円相当)
    Gasおじ|GoogleアカウントをAIエージェント化

    Gasおじ|GoogleアカウントをAIエージェント化

  • 【Python】 Con-Que 【データベース接続】

    ¥3,000
    1 %獲得
    (30 円相当)
    GoGorilla

    GoGorilla

  • USBメモリで持ち運べるLinux Mint 22.1と永続的な書き込み領域の作成法【Rufus だけで作成する方法を初心者向けに徹底解説】

    ¥500
    1 %獲得
    (5 円相当)
    SmartSenior

    SmartSenior