google script 入門 (google drive内のファイル&フォルダ一覧)
今日は、google drive内の「ファイルとフォルダの一覧表」を作成するスクリプトについて書きます。
記載したスクリプトは2つです。
1つ目は、指定したフォルダより「下層に存在するファイルとフォルダ」をリストアップするものです。
2つ目は、「自分のgoogle ドライブ内の全てのファイルとフォルダ」 をリストアップするものです。
google スクリプトを初めて動かす方は初めに以下も読んでみて下さい。
・google script 入門 (スプレットシートに "Hello World" を表示するまで)
■結果
ここに記載したスクリプトで得られる一覧表の例を下図に示します。
■スクリプト1
「指定したフォルダ」より「下層に存在するファイルとフォルダ」をリストアップするスクリプトを示します。
「google drive のフォルダ」を示すURL(下図の"???????????"の部分) は、自分のものに変更してください。
function myFunction() {
// googleドライブのフォルダを示す URL。ブラウザのURLのコピペ
const url = 'https://drive.google.com/drive/u/0/folders/1???????????'
let paths = url.split('/')
let folderId = paths[paths.length - 1]
let folder = DriveApp.getFolderById(folderId)
let aFolder = []
let aFile = []
scan(folder, aFolder,aFile)
printSheet(aFolder, 1)
printSheet(aFile, 5)
}
function scan(folder,aFolder,aFile){
aFolder.push(folder)
let p = folder.getFiles()
while(p.hasNext()) {
aFile.push(p.next());
}
p = folder.getFolders()
while(p.hasNext()) {
scan(p.next(), aFolder, aFile)
}
}
/*
* google スプレッドシートにファイル一覧を表示
*/
function printSheet(files, column){
const sheet = SpreadsheetApp.getActiveSheet()
let print = (p, row, column) => {
let x1 = p.getSharingAccess() // getSharingPermission(),getAccess(email)
let x2 = p.getUrl()
let buff = [[x1, x2, p]]
sheet.getRange(row, column, 1 , 3 ).setValues(buff)
// sheet.getRange(row, column, buff.length, buff[0].length).setValues(buff)
}
let i=1
files.forEach((e) => print(e, i++, column))
}
■スクリプト2
次に自分のgoogle drive 内の「全ファイルとフォルダの一覧」を作成するスクリプトを記載します。
ドライブ内のファイル数にもよりますが、実行には結構長い時間がかかります。
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet()
const printSheet = (v, row, column) => {
let x1 = v.getSharingAccess() // getSharingPermission(),getAccess(email)
let x2 = v.getUrl()
let buff = [[x1, x2, v]]
sheet.getRange(row, column, 1 , 3 ).setValues(buff)
// sheet.getRange(row, column, buff.length, buff[0].length).setValues(buff)
}
let p = DriveApp.getFolders()
var i = 1;
while (p.hasNext()) {
printSheet(p.next(), i++, 1)
}
p = DriveApp.getFiles()
i = 1;
while (p.hasNext()) {
printSheet(p.next(), i++, 5)
}
}