【GAS】Google Driveのフォルダ内のファイル名、URLを取得するSpreadSheet 汎用版【コピペプログラミング】

コピペプログラミング

【GAS】Googleドライブのファイル名とURLをスプレッドシートにとってくるスクリプト【ちょいスクリプト】

このスクリプトを、SpreadSheetのマクロ風にメニューに表示させて、フォルダのURLをポップアップのメッセージボックスから入力できるようにしました。まぁ、汎用的に使えるようにという感じです。(追加:ファイルサイズ付きにしました)

SpreadSheet  SpreadSheet (2種類の方法で取得するサイズ付き)

シート自体を開放するので、ご自由にお使いください。といいたいところですが、編集権がいるので、Facebookのメッセンジャーか、こだいらあたりでCivicTechかで、メールアドレスをお知らせいただけると、共有いたします。

役にたったな。。と思ったら

アマゾンギフトE-mailタイプで、まで、お布施いただけると、こだいらあたりでCivicTechの活動費に充てたいと思います。

15円からお布施いただけます。

使い方

最初に使う時

マクロを追加して、メニューを出します。これには実行を承認する必要があります(Google App Scriptに共通ですが)

ツール・マクロ・インポートを押します。

この中で、Tom_onMenu の 関数を追加します。

マクロを実行します。マクロ・Tom_onMenuです。

承認の画面類

スライドショーには JavaScript が必要です。

これで、Menuが出てきます。

ファイル名・URLの取り込み

URL名前Getというメニューがでていますので、Drive読込 をクリック

ポップアップが出てきますので、ファイル名と、URLを取得したい Google DriveのフォルダのURLをコピーして入れてください。

通常、↓みたいなURLです。

https://drive.google.com/drive/u/0/folders/dacaKDHhoearhaohfaDHPFIUD

そうすると、こんな感じで、ファイル名と、URLが取り込まれます。

共有して使う場合は、あとで、情報を消しておいた方がいいかもしれないので。。クリアするメニューもつけておきました。↓のシート1クリアを押すと、綺麗に消えます。

 

コピペでプログラミング

コピペで使いたい方のために。。

メッセージボックスに入力して、ファイル名、URLを取り出す関数

function Tom_getFileListInFolder() {
//フォルダのURLを入力してもらいIDを指定して、SpreadSheet の シート1に、ファイル名と、URLを取得して、SpreadSheet に書込み
try{
var folder_name = Browser.inputBox(‘Google DriveのフォルダURLを入れてください’);
var folder_id=folder_name.replace(‘https://drive.google.com/drive/u/0/folders/’,”);

folder = DriveApp.getFolderById(folder_id);
files = folder.getFiles();
list = []; //この変数のファイル名・URLが入っていきます
rowIndex = 1; // The starting row of a range.
colIndex = 1; // The starting row of a column.
var ss;
var sheet;
var range;
sheetName = ‘シート1’; //デフォルトのシート名がシート1です。

list.push([“ファイル名”,”URL”]);

while(files.hasNext()) {
var buff = files.next();
list.push([buff.getName(), buff.getUrl()]);

};
ss = SpreadsheetApp.getActive();
sheet = ss.getSheetByName(sheetName);
range = sheet.getRange(rowIndex, colIndex, list.length, list[0].length);

// 対象の範囲にまとめて書き出します
range.setValues(list);
}catch(e){
Browser.msgBox(e);
}

}

シートを綺麗にクリアする関数

function Tom_clearSheet(){
//シート1を全部クリア
try{
var ss;
var sheet;
var range;
sheetName = ‘シート1’; //デフォルトのシート名がシート1です。

ss = SpreadsheetApp.getActive();
sheet = ss.getSheetByName(sheetName);
// 全クリア
range = sheet.clear();
}catch(e){
Browser.msgBox(e);
}
}

メニューを出す関数

function Tom_onMenu() {
// スプレッドシートにメニューを追加する関数
SpreadsheetApp
.getActiveSpreadsheet()
.addMenu(‘URL名前Get’, [
{name: ‘Drive読込’, functionName: ‘Tom_getFileListInFolder’},
{name: ‘シート1クリア’, functionName: ‘Tom_clearSheet’},
]);
}

コピペの場合、なぜか全角が入ることがあるので、エラーが出たら ’ や ” の文字あたりに全角が入ってないか確認してみてください。

追加事項(ファイルサイズについて)

ファイルサイズを取ってきたいというご質問をいただき、ちょっとやってみました。

これ。。面白いです。Google Driveって、G Suiteで作ったファイルは、無制限で使えるって言われていますが。。本当に、ファイルサイズが0なんですね。へ~~

Google Appsのドキュメントを見てみると。。

getSize()

Gets the number of bytes used to store the File in Drive. Note that G Suite application files do not count toward Drive storage limits and thus return 0 bytes.

Return

Integer — the number of bytes used to store the File in Drive

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/drive

とあり、G suitesは0が返るのに注意ってあります。

ちょっと、ファイルを取ってみたら。。本当にそうかえってきます。ついでに、Google APIで直接とって比較しても、やはり0です。拡張子で効くのかな? Google Colaboratoryのファイルは、カウントされているのは、G Suitesでないからですね(笑)

ファイル名 Size Size2
小平市公民館サークル2019 0 0
小平市直売所マップ 0 0
All I Want For Christmas Is You.docx 7608 7608
Kodairaevent_bs.ipynb 33282 33282
小平アニメ聖地 0 0
公開用 住所から緯度経度 0 0
住所から緯度経度入れる 0 0
珈琲自家焙煎と直売所 0 0
樋口さんの「小平・もやしラーメン」 0 0
避難場所 0 0

File属性など

Google Appsのドキュメントに書いてありますありますが、Fileの属性は、名前、サイズ、作成日、更新日、概要、ダウンロード用URL、ファイルID、所有者、URLが、取得できます。

while (files.hasNext()) {
 var file = files.next();
 sheet.getRange(row, 1).setValue(file.getName());
 sheet.getRange(row, 2).setValue(file.getSize());
 sheet.getRange(row, 3).setValue(Utilities.formatDate(file.getDateCreated(), "JST", "yyyy/MM/dd HH:mm:ss"));
 sheet.getRange(row, 4).setValue(Utilities.formatDate(file.getLastUpdated(), "JST", "yyyy/MM/dd HH:mm:ss"));
 sheet.getRange(row, 5).setValue(file.getDescription());
 sheet.getRange(row, 6).setValue(file.getDownloadUrl());
 sheet.getRange(row, 7).setValue(file.getId());
 sheet.getRange(row, 8).setValue(file.getOwner().getName());
 sheet.getRange(row, 9).setValue(file.getUrl());
 row++;
}

役にたったな。。と思ったら

アマゾンギフトE-mailタイプで、まで、お布施いただけると、こだいらあたりでCivicTechの活動費に充てたいと思います。

15円からお布施いただけます。

投稿者 tom2rd

コメントを残していただけるとありがたいです

Loading Facebook Comments ...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください