Yuki's bnb blog

こんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。 お気軽にコメント・お問い合わせください :) TOEICスコア 985

【簡単!】GASでフォルダーを指定する方法

f:id:yukibnb:20191126163113p:plain

こんにちは!
Yuki (@yukibnb) です。

今日はGoogle Apps Script (GAS) でフォルダーを指定する方法を紹介します。

フォルダーを指定する方法がわかると、特定のフォルダー内にファイルを保存したり、特定のフォルダー内のファイル一覧を表示したりと様々な応用できるようになります。

 

フォルダーIDで指定する方法

ひとつめはフォルダーIDを使ってフォルダーを指定する方法です。

公式

getFolderByID()メソッドを使用します。

f:id:yukibnb:20191126142017j:plain

 
フォルダーIDはウェブブラウザーのアドレスバーにて確認できます。

例えば「営業」フォルダーを取得したい場合、以下手順でフォルダーIDを確認します。

  1. ウェブブラウザーで「営業」フォルダーを開きます。
  2. ウェブブラウザーのアドレスバーを見てください。
  3. https://drive.google.com/drive/folders/...........」の...........の部分に長いランダムな英数字が表示されています。それがフォルダーIDです。

f:id:yukibnb:20191126142735p:plain

 

注意点

getFolderByID()の括弧内にフォルダーIDを入れる際、必ずシングルもしくはダブルクォーテーションマークで囲んでください

クォーテーションマークで囲まずに記述するとエラーになります。

例えばフォルダーIDが「sxN4HhiV9b」だと仮定した場合(実際のフォルダーIDはもっと長いですが)、クォーテーションマークの有無で以下のように動作に影響します。

f:id:yukibnb:20191126150401j:plain

 

使用例

ではいくつか実際の使い方を見てみましょう。

getFolderById()以外の詳しい解説はこの記事では割愛しますが、「こういう使い方がある」程度で読み流して頂いて大丈夫です。
 

指定したフォルダー直下の全ファイル名を取得
function checkFiles() {
  //変数folderに指定したフォルダーを格納する
  var folder = DriveApp.getFolderById(フォルダーID);
  
  //フォルダー内の全ファイルを変数folderFilesに格納する
  //※フォルダー直下のファイルのみ格納します
  var folderFiles = folder.getFiles();
  
  //ファイル名を格納するための空の配列です
  var allFiles = [];
  
  //変数folderFilesに格納されている全ファイルのファイル名を
  //配列allFilesに追加します
  while(folderFiles.hasNext()) {
    var file = folderFiles.next();
    var fileName = file.getName();
    
    allFiles.push(fileName);
  }
  
  //ログを出力します
  Logger.log(allFiles);
}

 
変数「folder」に特定のフォルダーを格納し、そのフォルダー直下にあるファイル名を取得しました。

このように変数に格納することで後から使いやすくなります。なお変数名の「folder」は僕が付けただけなので、お好きな変数名を付けてください。

 
「営業フォルダー直下にある全てのファイル名を取得したい!」という使い方ができます。
f:id:yukibnb:20191126154916p:plain

 
営業フォルダー直下には4つのファイルがあります。GASを実行するとログに無事4つのファイル名が表示されました。
f:id:yukibnb:20191126154553p:plain

 

フォルダーID自体を変数に格納しておく
  //フォルダーIDを変数folderIdに格納
  var folderId = "フォルダーID";

  //変数folderに指定したフォルダーを格納する
  var folder = DriveApp.getFolderById(folderId);

このようにフォルダーID自体を変数に格納しておくと、何回もフォルダーIDを記述する手間が省けます。

 

ルートフォルダーを指定する方法

次はGoogle Driveのルートフォルダーを指定する方法です。

ルート (root) とは根本や根源などの意味です。ルートフォルダーとはすべてのフォルダーの根源となるフォルダー、つまり最上階層のフォルダーのことです。

Google Driveではマイドライブがルートフォルダーにあたります。

f:id:yukibnb:20191126160538p:plain

 

公式

getRootFolder()メソッドを使用します。

f:id:yukibnb:20191126160922j:plain

 
前述のgetFolderByID()メソッドは「特定のフォルダーに対して○○したい」というものですが、今回のgetRootFolder()メソッドは「ルートフォルダー(マイドライブ)に対して○○したい」というものです。

 

使用例

使い方はgetFolderByID()メソッドと特に変わりありません。

ルートフォルダー直下の全ファイル名を取得したい場合、以下のように記述します。
 

ルートフォルダー直下の全ファイル名を取得
function checkRootFiles() {
  //変数folderにルートフォルダーを格納する
  var folder = DriveApp.getRootFolder();
  
  //ルートフォルダー内の全ファイルを変数folderFilesに格納する
  //※ルートフォルダー直下のファイルのみ格納します
  var folderFiles = folder.getFiles();
  
  //ファイル名を格納するための空の配列です
  var allFiles = [];
  
  //変数folderFilesに格納されている全ファイルのファイル名を
  //配列allFilesに追加します
  while(folderFiles.hasNext()) {
    var file = folderFiles.next();
    var fileName = file.getName();
    
    allFiles.push(fileName);
  }
  
  //ログを出力します
  Logger.log(allFiles);
}

ログを確認するとルートフォルダー直下のファイルが表示されます。

 

まとめ

今日はGoogle Apps Script (GAS) を使用してフォルダーを指定する方法を2種類紹介しました。

getFolderByID()メソッドやgetRootFolder()メソッドを活用するとフォルダーに関係する様々なことができるようになります。

次回以降の記事で実際の活用例を紹介したいと思います。ご期待ください!

【2019/12/1追記】
応用編として「フォルダー直下の全ファイルの共有リンクを一括作成してスプレッドシートにペーストする方法」を以下記事で紹介しました!
www.yukibnb.com