masaban1’s blog

位相空間に閉じた円軌道になる要件を究明する

google APP Script でデータのバックアッププログラム エクスプローラもどきを目指して

//GASでファイル名のリストを作ります。
//
//Google スプレッドシートというエクセルに似た計算表にファイル名、ファイルサイズ、作成日、更新日、ファイルIDを含むURLをリストアップするプログラムです。
//
//クロームブックのルートファイルのファイルをリストできる効果があるのでご紹介します。
//
//最終目的はバックアップに役立つプログラムチップを作ることです。今回のプログラムはその骨格基本部です。
//
//ファイルのバックアップに役立つプログラムを手に入れたかったのだが、ウィンドウズでも持っていなかった。同じファイルを削除したり、
//バックアップされていないファイルを自動でバックアップしたり、フォルダツリー構造とファイル名をリストアップしたり、
//予備バックアップSDカードを重複数を管理して作ったり、全文フリーキーワードの検索のできる、エクスプローラーの機能を超えたデータをファイルに残せるプログラムが欲しかった。
//すでに使ったことがあってもしご存知なら、いい情報があったらわたしにも教えて下さい。
// いまウィンドウズを使わず、クロームブックのOSにPCを新しくした。クロームブックでもそういうのが欲しい。
// 自作でgoogle DRIVE上のルートのファイル名と作成日一覧、各ファイルのURLをシートに記録するプログラムをやっと作れた。
// 楽に使えるのがあればそれを参考にしたり、使ってみたいな。コードを皆さんにご覧に入れます。

////GASファイル名を一覧する (ランタイム制限6分間中現在は3.197秒を専有)

//ファイル名・サイズ・作成日・更新日・URLの5データを取得するスクリプト

//コード開始

function getFileListV2() {   
//スプレッドシート内にはアクティブなlistというシート名のシート を用意しておく。

 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('list'); 

 var folder = DriveApp.getRootFolder();   //変数folderにルートフォルダーを格納する 

 

  const files = folder.getFiles(); // 指定フォルダ内のファイルを一括取得(FileIteratorオブジェクト)

 let arrFiles = [];//配列にデータを取り込む


//調査日時刻をシートの1行目E列に記入する   

sheet.getRange(1, 4).setValue("フォルダ点検日");

const date = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd (E) HH:MM");

sheet.getRange(1 , 5).setValue(date);


var 行 = 2 ;//シートの書き込み位置初期化  

sheet.getRange(行, 1).setValue("名前");

sheet.getRange(行, 2).setValue("size");

sheet.getRange(行, 3).setValue("作成日");

sheet.getRange(行, 4).setValue("更新日");

sheet.getRange(行, 5).setValue("URL");

行= 行+ 1

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//データ配列作成とシートに記入開始

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

while (files.hasNext()) { 

      const file = files.next(); 

      const name = file.getName(); 

  const size = file.getSize(); 

  var createdDate = Utilities.formatDate(file.getDateCreated(), "JST", "yyyy年MM月dd日 (E) HH:mm:ss");

  var lastUpdatedDate = Utilities.formatDate(file.getLastUpdated(), "JST", "yyyy年MM月dd日 HH:mm:ss");

  const url = file.getUrl(); 

  arrFiles.push([name,size,createdDate,lastUpdatedDate,url]);//配列に書き込む 完成表の表示にlogではデータの全数を見れない表示制限を受ける欠点がある。

//    シートに書き込む CPUランタイムが長くなる欠点があるかもしれぬのでコメント化し実行しない。

// ss.sheet.getRange(行, 1).setValue(name);
//
// ss.sheet.getRange(行, 2).setValue(size);
//
// ss.sheet.getRange(行, 3).setValue(createdDate);
//
// ss.sheet.getRange(行, 4).setValue(lastUpdatedDate);
//
// ss.sheet.getRange(行, 5).setValue(url);

 行 = 行 + 1 ;

};//ファイル名称等データの全数をシートに書き出す。

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

//データ配列作成とシートに記入終わり

//    console.log(arrFiles); ////配列に書き込むlogではデータの全数を見れない表示制限を受ける欠点がある。配列が大きすぎる


// A3セルを起点にして一括して配列データを書き込む
 sheet.getRange(3,1,arrFiles.length,arrFiles[0].length).setValues(arrFiles);
}

//終了