目次
コピペプログラミング
このスクリプトを、SpreadSheetのマクロ風にメニューに表示させて、フォルダのURLをポップアップのメッセージボックスから入力できるようにしました。まぁ、汎用的に使えるようにという感じです。(追加:ファイルサイズ付きにしました)
SpreadSheet SpreadSheet (2種類の方法で取得するサイズ付き)
シート自体を開放するので、ご自由にお使いください。といいたいところですが、編集権がいるので、Facebookのメッセンジャーか、こだいらあたりでCivicTechかで、メールアドレスをお知らせいただけると、共有いたします。
役にたったな。。と思ったら
アマゾンギフトE-mailタイプで、まで、お布施いただけると、こだいらあたりでCivicTechの活動費に充てたいと思います。
15円からお布施いただけます。
使い方
最初に使う時
マクロを追加して、メニューを出します。これには実行を承認する必要があります(Google App Scriptに共通ですが)
ツール・マクロ・インポートを押します。
この中で、Tom_onMenu の 関数を追加します。
マクロを実行します。マクロ・Tom_onMenuです。
承認の画面類
これで、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なんですね。へ~~
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円からお布施いただけます。
コメントを残していただけるとありがたいです