may the VBA be with you

Excel VBAとか業務自動化とか

[GAS] Googleドライブのフォルダ内ファイルの一覧作成

はじめに

f:id:vba-belle-equipe:20191001174609j:plain
000460.jpgさんです

photoshopvip.net

いやー、すごい時代ですね。
というわけで、意味なくgenerated.photosの画像を使わせてもらいました。

generated.photos

最近気になる

www.glideapps.com

glideというサービスです。
自分のGoogleシートのデータを使って簡単にスマホアプリが作れてしまうという。
いやー、すごい時代ですね。(もういいよ)

そんなわけで、たまにはGoogle Apps Scriptネタでも。

Googleドライブのフォルダ内ファイルの一覧作成

Googleシートのアクティブシートに書き出します。

コードです。

var SpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var Sheet = SpreadSheet.getActiveSheet();
var ResultAry = [];

//対象とするフォルダ
var TargetFolder = DriveApp.getFolderById("*******適宜*******");

//フォルダ内にあるファイルの名前とURLを列挙する
function listUpFilesData(){
  var targetFiles = TargetFolder.getFiles();
  var addAry = [1];
  
  //タイトル行
  addAry[0] = 'ファイル名';
  addAry[1] = 'URL';
  ResultAry.push(addAry);  
 
  //ファイルの数だけ繰り返し
  while(targetFiles.hasNext()){
    addAry = [1];
    var file = targetFiles.next();
    addAry[0] = file.getName();
    addAry[1] = file.getUrl();
    ResultAry.push(addAry);    
  }
  
  var len = ResultAry.length;
  Sheet.clear();
  var range = Sheet.getRange(1,1,len,2);
  range.setValues(ResultAry);
}

ポイント

GASでGoogleシートを操作する時は
値を読む「getValue(s)」と値を入力する「setValue(s)」
をよく使うことになります。

が、軽い気持ちでfor文で回しながら使うととても時間がかかる。
ということで、シートに一気に吐き出す配列を使って処理をしてます。

これってExcelVBAで複数のセルの値をVariantに入れるのとそっくりですね!

結果

f:id:vba-belle-equipe:20191001182052p:plain
結果

こんな感じです。
まあ素っ気ない!