【GAS、Google Spreadsheet】Googleドライブのルートフォルダに有るフォルダを一覧で取得するスクリプトです

Code

はじまり

135ml
135ml

よっしゃあ、今回はGoogle DriveにあるフォルダをGoogle Spreadsheet上に取得する方法を紹介だあ!

リサちゃん
リサちゃん

ほおほお、まあGoogleドライブでフォルダを管理するなら、地味に欲しいよね。

白米を食ってるときに欲しくなる沢庵くらいのポジションだよね。

135ml
135ml

そうだな・・・、必須ではないけど欲しいくらいのものだな。よし、行ってみよう!

リサちゃん
リサちゃん

はあー、沢庵食いたくなってきたあ。買ってこよー。

ツールの紹介

今回のツールは、下記のシートの赤線で囲まれた部分になります。

「getFolderListInFolder」ボタンを押すとスクリプトが走り、終了するとA3~C3セル以降の行に値が入ります。

  • A列・・・ファイル名
  • B列・・・ファイルのID
  • C列・・・ファイルのURL

ちなみに、D列にあるHYPERLINK関数を別のセルに貼り付けると、セルにハイパーリンクが付いたフォルダ名が入力されます。

ソートすれば、スクリプトを走らせる前のような順序になります。

シートの造り

図形描画で作成した四角形を右クリックすると右上に三点リーダー(︙)が表示されるので、そこをクリックして「スクリプトを割り当て」をクリックすると・・・。

スクリプトを割り当てられるので、「getFolderListInFolder」を入力してOKします。

スクリプトの紹介

以下が今回使用したスクリプトになります。

拡張機能から「Apps Script」を開いて、以下のスクリプトを打ち込んで先程のシートの設定をすると、使用できます。

iで開始行を、column_for_fileListで開始列を指定して、そこを基準に欲しいデータをシートに入力するようにしています。

コード.gs

function getFolderListInFolder() {
  var folder = DriveApp.getRootFolder(),
    sheetName = '【出力結果】フォルダのURL',
    key = DriveApp.getRootFolder().getId(),
    ss;
    name = "",
    i = 3, //フォルダを処理する行位置
    column_for_fileList = 1; // A列のインデックス
  ss = SpreadsheetApp.getActive();
  sheet = ss.getSheetByName(sheetName);
  
  var folders = DriveApp.searchFolders("'"+key+"' in parents");
  while(folders.hasNext()) {
    i++;
    var folder = folders.next();
    sheet.getRange(i, 0+column_for_fileList).setValue(name + folder.getName());
    sheet.getRange(i, 1+column_for_fileList).setValue(folder.getId());
    sheet.getRange(i, 2+column_for_fileList).setValue(folder.getUrl());
  }
}

おしまい

135ml
135ml

よし、今回はこんなもんだな・・・!

・・・・・・

135ml
135ml

よし、今回はこんなもんだな・・・!

・・・・・・

135ml
135ml

あれ? まじで沢庵を買いに行ってるのか・・・。なかなか長いな・・・。

リサちゃん
リサちゃん

はあはあ、ただい丸大豆醤油~!!

135ml
135ml

おかえリコーの複合機~。

丸大豆醤油じゃなくて、沢庵を買ってきたんじゃないの?

リサちゃん
リサちゃん

ああ、この際だから沢庵を育てようと思って!! 大根買ってきた!!

135ml
135ml

すぐ食いたいんじゃなかったの?

リサちゃん
リサちゃん

まあ、必須ではないけど欲しいくらいのものだからね。

135ml
135ml

あんなに即決で走ったんだよなあ・・・?

おまけ

ペンギン
ペンギン

今回使ったシートの他の関数を紹介した記事は以下になります。よければ見てみて下さい!

以上になります!

コメント

タイトルとURLをコピーしました