スクリーンショット_2020-02-26_16

【GAS】小技:Google スプレッドシートに記述したフォルダ階層をGoogle Driveに作成

ちょっとGoogle Drive上にこんな階層でフォルダ作成したいんだけど・・・
あぁ。。。まーまー階層あるから画面上でぽちぽち作成するのは意外とめんどくさいんですねw
kintone関連のカスタマイズをやっていると結構GASと連携させる事も多くて、ちょいちょいGASは書いているのですが、今回はkintone関係なくて単純にGASとスプレッドシート、Google Drive連携の小技です。

本記事はこんな方におすすめ

・プログラム勉強中
・GASでちょっとだけ便利ツール作りたい
・スプレッドシートとGASを上手く使いたい

やりたい事

・ スプレッドシートに記載したフォルダ階層をそのままGoogle Driveに作成
・スプレッドシート名を親フォルダ
・セルに記載したフォルダ階層を親フォルダ内に子フォルダとして作成
・スプレッドシート上のボタン1クリックで作成

手順(4Step)

たった4Stepでできちゃいます。

1. スプレッドシート作成
 ・ スプレッドシート名決定(親フォルダ)
 ・ 子フォルダ階層の記載
2. スクリプト作成
3. スプレッドシートにボタン配置
 ・ スプレッドシートのボタンとスクリプトの関連付け
4. 実行(ボタン押下)

それでは1Stepずつやってみましょう。

1. スプレッドシート作成

Google スプレッドシートを新規作成し、スプレッドシート名(親フォルダ名=setTreeSample)と子フォルダ(child1〜10)を設定します。

スクリーンショット 2020-02-26 16.16.13

child3_1やchild4_1,child4_2はさらに孫・ひ孫の階層です。
「Google Drive フォルダ作成」のボタンについては後述の「3. スプレッドシートにボタン配置」で記載します。

2. スクリプト作成

スプレッドシートのツール > スクリプトエディタ からスクリプトを作成します。

スクリーンショット 2020-02-26 16.18.02

起動した画面がGAS(Google Apps Script)のエディタ画面です。
ここで、プログラムを記載します。
画面左上はプロジェクト名:setTreeSample
ファイル名も同様に:setTreeSample.gs

スクリーンショット 2020-02-26 16.22.38

実際のコードは以下を貼り付けて保存して下さい。
(BASE_FOLDER_IDには該当のフォルダIDを記載します)

var ROW = 10; // 子フォルダの数(child1〜10)
var COL = 10; // 孫フォルダ以下の階層数(child<n>_1〜child<n>_10)
// フォルダID(https://docs.google.com/spreadsheets/d/xxxxx/edit#gid=0)
var BASE_FOLDER_ID = 'xxxxx';

function setTree() {
 var folder = DriveApp.getFolderById(BASE_FOLDER_ID);
 var parent = folder.createFolder(SpreadsheetApp.getActiveSpreadsheet().getName());
 var sheet = SpreadsheetApp.getActiveSheet();
 var data = sheet.getRange(3, 1, ROW, COL).getValues();
 var length = data.length;
 var value;
 var child = [];
 var treeNum = 0;
 for (var i = 0; i < data.length; i++ ) {
   for (var j = 0; j < COL; j++) {
     if ("" != data[i][j]) {
       if (0 == j) {
         treeNum = 1;
         child[treeNum] = parent.createFolder(data[i][j]);      
       } else {
         child[treeNum+1] = child[treeNum].createFolder(data[i][j]);
         treeNum++;
       }        
     }
   }
   child = [];
   treeNum = 0;
 }  
}

3. スプレッドシートにボタン配置

スプレッドシートで、挿入 > 図形描画からボタンを作成します。

スクリーンショット 2020-02-26 16.32.16

スクリーンショット 2020-02-26 16.32.55

保存して終了し、画面左上に配置したら、先ほど作成したスクリプトと関連付け(スクリプトの割り当て)します。

スクリーンショット 2020-02-26 16.35.52

スクリプト(GAS)で記載したプログラムのの関数名を設定します。

スクリーンショット 2020-02-26 16.36.24

4. 実行(ボタン押下)

これで「Google Drive フォルダ作成」の図形(ボタン)をクリックすると、Google Drive(ID=xxxxx)にsetTreeSampleフォルダ(スプレッドシート名)が作成され、その中にはスプレッドシートに記載したchiled1〜10が作成されます。

スクリーンショット 2020-02-26 16.40.07

まとめ

今回はスプレッドシートから作成したGASで、Google Drive連携を行いましたが、スプレッドシート上に作成した図形(ボタン)の押下で、スクリプト(GAS)の実行を行う方法は、意外と便利に使えます。
Google Drive上の作成する場所や、階層数、フォルダ名を適宜変更すれば、画面上からひたすらぽちぽちしなくても1クリック作成なので、ちょっとだけ楽チン便利です!
冒頭にある通り、kintoneのカスタマイズでGAS連携もよく使いますし、ちょっとしたツール、Google各種サービス連携にはとっても便利です。

kintoneアプリ無料相談


この記事が気に入ったらサポートをしてみませんか?