見出し画像

画像ファイルが保存されているフォルダの情報をスプレッドシートにだすGoogle Apps Scriptの例

この説明は、ChatGPTで作成しています。

以下は、提供されたスクリプト「フォルダ内の画像情報をスプレッドシートに出力するスクリプト」についての解説です。


このスクリプトの目的

このスクリプトは、指定したGoogle Driveのフォルダ内に保存されている画像ファイルの情報を取得し、それをGoogleスプレッドシートに記録するものです。画像の情報として、ファイル名、ファイルサイズ、画像のURL、解像度(幅×高さ)、プレビューを記録します。


動作の仕組み

  1. フォルダとスプレッドシートの設定

    • スクリプトの初めに、画像が保存されているフォルダと、情報を記録するスプレッドシートを指定します。

    • FOLDER_ID と SPREADSHEET_ID に、それぞれフォルダIDとスプレッドシートIDを設定する必要があります。

      • フォルダID を取得するには:

        1. Google Driveで対象のフォルダを開く。

        2. URLのhttps://drive.google.com/drive/folders/の後ろに続く文字列がフォルダIDです。

      • スプレッドシートID を取得するには:

        1. スプレッドシートをChromeで開く。

        2. URLのhttps://docs.google.com/spreadsheets/d/の後ろに続く文字列がスプレッドシートIDです。

        3. 末尾に/editが含まれている場合、それを除いた部分がIDとなります。

  2. ヘッダーを設定

    • スプレッドシートの1行目に、以下のヘッダーを設定します:

      • ファイル名

      • ファイルサイズ

      • URL

      • 画素数

      • プレビュー

  3. 画像ファイルの取得

    • 指定したフォルダ内のすべてのファイルを取得し、その中から画像ファイルのみを処理します。画像ファイルの判定は、ファイルのMIMEタイプ(image/で始まるかどうか)で行います。

  4. 画像の解像度取得

    • 一時的にGoogle Docsに画像を貼り付けることで、画像の幅(横幅)と高さ(縦幅)を取得します。この処理は一時的なものなので、使用後はGoogle Docsファイルを削除します。

  5. スプレッドシートへの出力

    • スプレッドシートに、画像の情報を1行ずつ記録します。各画像のダウンロードリンクを使用して、IMAGE関数で画像プレビューを挿入します。

    • 列幅や行高さを自動調整して、見やすいレイアウトに整えます。

  6. 実行時間の記録

    • スクリプトの開始時刻と終了時刻を記録して、処理時間を表示します。

  7. エラーハンドリング

    • スクリプト実行中にエラーが発生した場合は、エラーメッセージと発生時刻をポップアップで通知します。


使い方

  1. Googleスプレッドシートを開き、「拡張機能」→「Apps Script」を選択してエディターを開きます。

  2. 提供されたスクリプトをエディターにコピー&ペーストします。

  3. FOLDER_ID と SPREADSHEET_ID を正しい値に置き換えます。

  4. スクリプトを保存し、実行します。


注意点

  • 初めてスクリプトを実行する際は、Googleからの認証を求められる場合があります。指示に従い、権限を許可してください。

  • 対象フォルダ内のファイルが多い場合、処理に時間がかかることがあります。


リンク

function getImageFilesInfo() {
  // 開始時刻を記録
  const startTime = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "HH:mm:ss");
  try {
    // 画像が格納されているフォルダと各種データを出力するスプレッドシートを指定する
    const FOLDER_ID = '●●●ここにフォルダIDをいれてください●●●';
    const SPREADSHEET_ID = '●●●ここにスプレッドシートIDをいれてください●●●';
    
    const folder = DriveApp.getFolderById(FOLDER_ID);
    const spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID);
    const sheet = spreadsheet.getActiveSheet();
    
    const headers = [['ファイル名', 'ファイルサイズ', 'URL', '画素数', 'プレビュー']];
    sheet.getRange(1, 1, 1, 5).setValues(headers);
    
    sheet.setRowHeight(2, 100);
    
    const files = folder.getFiles();
    const imageData = [];
    let row = 2;
    
    while (files.hasNext()) {
      const file = files.next();
      const mimeType = file.getMimeType();
      
      if (mimeType.indexOf('image/') === 0) {
        const tempDoc = DocumentApp.create('temp');
        const blob = file.getBlob();
        const image = tempDoc.getBody().appendImage(blob);
        const width = image.getWidth();
        const height = image.getHeight();
        
        const fileUrl = file.getUrl();
        const match = fileUrl.match(/https:\/\/drive\.google\.com\/file\/d\/(.*)\/view(.*)/);
        const fileId = match ? match[1] : null;
        const downloadUrl = fileId ? `https://drive.google.com/uc?export=download&id=${fileId}` : '';
        
        // imageDataには'プレビュー'列を含めない
        imageData.push([
          file.getName(),
          formatFileSize(file.getSize()),
          file.getUrl(),
          `${width} x ${height}`
        ]);
        
        // IMAGE関数を別途設定
        if (downloadUrl) {
          sheet.getRange(row, 5).setFormula(`=IMAGE("${downloadUrl}", 2)`);
        }
        
        DriveApp.getFileById(tempDoc.getId()).setTrashed(true);
        row++;
      }
    }
    
    if (imageData.length > 0) {
      // 最初の4列のみデータを設定
      sheet.getRange(2, 1, imageData.length, 4).setValues(imageData);
    }
    
    sheet.autoResizeColumns(1, 4);
    sheet.setColumnWidth(5, 150);
    // 完了時刻を記録(ミリ秒単位)
    const endTime = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "HH:mm:ss");
    SpreadsheetApp.getUi().alert(
        '実行が完了しました!\n' +
        `開始時間:${startTime}\n` +
        `終了時間:${endTime}`
    );
  
  // エラー処理
  } catch (error) {
    // エラー発生時刻を記録
    const errorTime = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "HH:mm:ss");
    // エラーメッセージを表示
    SpreadsheetApp.getUi().alert(
      'エラー発生のため実行中断しました!\n' +
      `所要時間:${errorTime}\n` +
      `エラー内容:${error.toString()}`
    );
  }

}

// ファイルサイズフォーマット用の関数(既存のまま)
function formatFileSize(bytes) {
  if (bytes < 1024) return bytes + ' B';
  if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(2) + ' KB';
  if (bytes < 1024 * 1024 * 1024) return (bytes / (1024 * 1024)).toFixed(2) + ' MB';
  return (bytes / (1024 * 1024 * 1024)).toFixed(2) + ' GB';
}

ハッシュタグ

#GoogleAppsScript #GoogleDrive #スプレッドシート #画像情報 #プレビュー表示 #フォルダ内検索 #ファイルサイズ取得 #解像度取得 #自動化 #スクリプト初心者 #エラー処理 #スクリプト実行 #GASチュートリアル #GoogleDocs #画像一覧作成 #スクリプト活用 #AppsScript活用 #初心者向けGAS #ファイル管理 #DriveAPI


英訳

This explanation is created using ChatGPT.

Below is an explanation of the provided script "Script to Output Image Information in a Folder to a Spreadsheet."


Purpose of this Script

This script retrieves information about image files stored in a specified Google Drive folder and records it in a Google Spreadsheet. The recorded information includes file name, file size, image URL, resolution (width x height), and a preview.


How it Works

  1. Setting the Folder and Spreadsheet

    • At the beginning of the script, specify the folder containing the images and the spreadsheet where the information will be recorded.

    • You need to set FOLDER_ID and SPREADSHEET_ID with the respective folder and spreadsheet IDs.

      • To get the folder ID:

        1. Open the target folder in Google Drive.

        2. The folder ID is the string following https://drive.google.com/drive/folders/ in the URL.

      • To get the spreadsheet ID:

        1. Open the spreadsheet in Chrome.

        2. The spreadsheet ID is the string following https://docs.google.com/spreadsheets/d/ in the URL.

        3. Exclude /edit at the end if it is present.

  2. Setting the Headers

    • The script sets the following headers in the first row of the spreadsheet:

      • File Name

      • File Size

      • URL

      • Resolution

      • Preview

  3. Retrieving Image Files

    • It retrieves all files in the specified folder and processes only image files. Image files are identified by their MIME type (those starting with image/).

  4. Getting Image Resolution

    • It temporarily uploads the image to Google Docs to get the image's width and height. This temporary file is deleted afterward.

  5. Outputting to Spreadsheet

    • The script writes the image information row by row into the spreadsheet. The IMAGE function is used to insert image previews using their download links.

    • The column widths and row heights are automatically adjusted for better visibility.

  6. Recording Execution Time

    • The script records and displays the start and end times of the process to show how long it took.

  7. Error Handling

    • If an error occurs during execution, a popup displays the error message and the time of occurrence.


Usage

  1. Open a Google Spreadsheet, go to "Extensions" → "Apps Script," and open the editor.

  2. Copy and paste the provided script into the editor.

  3. Replace FOLDER_ID and SPREADSHEET_ID with the correct values.

  4. Save and run the script.


Notes

  • When running the script for the first time, Google may prompt you for authorization. Follow the instructions to grant the necessary permissions.

  • Processing may take some time if there are many files in the target folder.


Links


Hashtags

#GoogleAppsScript #GoogleDrive #Spreadsheet #ImageInfo #PreviewDisplay #FolderSearch #FileSizeRetrieval #ResolutionRetrieval #Automation #ScriptBeginner #ErrorHandling #ScriptExecution #GASTutorial #GoogleDocs #ImageListCreation #ScriptUtilization #AppsScriptUtilization #GASForBeginners #FileManagement #DriveAPI

いいなと思ったら応援しよう!