指定したフォルダに入っている画像を、スプレッドシートのセルに反映するGoogle Apps Scriptです。画像もシート上に表示しますので画像の整理やレビューをするときに役立つかも。
特にありません。スプレッドシートがあればOKです。
スプレッドシートに画像を表示するためには、「リンクを知っている全員」に閲覧(以上の)権限が無いと動作しません。
対象のフォルダの共有権限を変更しておきましょう。
今回テストした環境は、フォルダもスプレッドシートも同じアカウントがオーナーだったんですがそれだけでは画像が表示されませんでした。
オーナーは関係なく、共有設定を「リンクを知っている全員」にしないとダメみたいです。
次に画像が保存されているフォルダのURLをコピーしておきましょう。
事前準備が終わったので、さっそく実行してみましょう。
上のメニューにある「スクリプト実行」から「ドライブの画像リストを取得する」を実行します。
対象のフォルダURLを聞かれますので、事前準備でコピーしておいたURLを入力してOKを押します。
処理が終わると「処理が完了しました!」とメッセージが表示されます。
アクティブなシートに、ファイル名と画像が追記されています。
appendRow()で1行ずつ追記していますので、ファイルが大量にあって6分を超えてしまう場合はsetValues()に書き換えてみてください。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00127/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('ドライブの画像リストを取得する', 'get_drive_images');
// メニューを画面に追加する
menu.addToUi();
}
function get_drive_images() {
// UIオブジェクトを取得
let ui = SpreadsheetApp.getUi();
// 画像が保存されているドライブのURLを入力してもらう
const input = ui.prompt('URLを入力してください', '画像が保存されているGoogleドライブのフォルダのURLを入力してください', ui.ButtonSet.OK_CANCEL);
// キャンセルが押されたら終了
if (input.getSelectedButton() == ui.Button.CANCEL) {
return;
}
// 入力されたURLからフォルダのIDを取得する
const url_drive_id = input.getResponseText().match(/https:\/\/drive.google.com\/drive\/folders\/(.*)$/)[1];
// フォルダを取得
const folder = DriveApp.getFolderById(url_drive_id);
// フォルダからファイルを取得
const files = folder.getFiles();
// アクティブなスプレッドシートオブジェクトを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// アクティブなシートを取得
const sheet = ss.getActiveSheet();
// ファイルを取り出し終わるまでループ
while (files.hasNext()) {
// ファイルを取得
let file = files.next();
// MIMEタイプがimageではないものは処理しない
if (!file.getMimeType().match(/image/)) {
continue;
}
// 画像ファイルの名前を取得
let file_name = file.getName();
// 画像ファイルのIDを取得
let file_id = file.getId();
// ファイルのURLを組み立てる。共有権限が「URLを知っている人がアクセス可能」でないと取得できない。
let file_url = "https://drive.google.com/uc?export=download&id=" + file_id;
// image関数で呼び出すため、数式を組み立てる
let formula = '=image("' + file_url + '")';
// シートに追記する
sheet.appendRow([file_name, formula]);
}
ui.alert("処理が完了しました!");
}
特定のGoogle Driveにある画像を、1枚ずつスライドに貼り付けてくれるGoogle Apps Scriptです。大量の画像を含む報告資料やメンバー紹介用スライドなどにどうぞ。画像はスライドの中央に配置されます。対応している画像タイプはJPG、GIF、PNGの3種類です。
シートに記載したファイルURLを元に、親フォルダの名前とURLを出力するGoogle Apps Scriptです。
Googleドライブ上でファイル名が重複しているものを探すGoogle Apps Scriptです。同じ名前のファイルに苦しめられている方、いかがですか?