基本中の基本!GASでGoogleドライブのファイル・フォルダをIDで取得する

catch

photo credit: mark.calvin33 PVHS v Paxon-219 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps Scriptで新規スプレッドシートを指定のフォルダに作成する方法をシリーズでお届けしています。

初心者向けですが、スプレッドシートやGoogleドライブなど一通りの基本を覚えられるのでオススメですよ。

さて、前回の記事はこちら。

初心者でも簡単!GASでスプレッドシートを作成する方法&取得する方法
Google Apps Scriptで新規スプレッドシートを作成する方法、またそのIDを取得する方法をお伝えします。GASでは全てのファイルにIDが付与されていますので、IDでの取り扱いが便利ですよ。

新規のスプレッドシートの作り方についてお伝えしました。

しかし、作成したスプレッドシートは常にルートフォルダに作成されてしまいます。

ですから、そのファイルを目的のフォルダに移動したい、ということがあるわけです。

ということで、今回はそのための準備としてのGoogleドライブ操作の基本中の基本。

Google Apps ScriptでGoogleドライブのフォルダやファイルをIDで操作する方法です。

ではいってみましょう。

スポンサーリンク

スプレッドシートを指定のフォルダに作成するためには?

冒頭でもお伝えしましたが、スプレッドシートを指定のフォルダに作成することを、ファイルを移動する方法を利用して実現します。

つまり、以下のような手順です。

  1. Spreadsheet.createメソッドで新規スプレッドシートをルートフォルダに作成する
  2. 新規スプレッドシートをFileオブジェクトとして取得
  3. 移動先のフォルダをFolderオブジェクトとして取得
  4. 新規スプレッドシートのFileオブジェクトを移動先のFolderオブジェクトに追加
  5. ルートフォルダから新規スプレッドシートのFileオブジェクトを削除

これで、結果的に「指定のフォルダにスプレッドシートを作成した」となりますよね。

手順の1は前回の記事でお伝えした通り、SpreadsheetApp.createメソッドを使って実現できます。

function creatSS() {

  SpreadsheetApp.create("新規SS");

}

今回は2と3、つまりGoogleドライブのファイルやフォルダを取得する部分を進めていきます。

スプレッドシートをFileオブジェクトとして取得する

スプレッドシートをFileオブジェクトとして取得するにはIDを使って取得する方法が簡単です。

スプレッドシートのIDは、前回お伝えした通り、SpreadsheetオブジェクトのgetIdメソッドで取得できます。

つまり、前述のスクリプトを以下のようにすれば、作成したスプレッドシートのIDが変数idSSに格納されるということになります。

function creatSS() {

  const id = SpreadsheetApp.create("新規SS").getId();

}

次いで、そのIDからFileオブジェクトを取得するのですが、その場合はDriveApp.getFileByIdメソッドを使います。

書き方はこちらです。

DriveApp.getFileById(ID)

これでGoogleドライブ内の特定のファイルを取得することができます。

スクリプトに以下のように追加をします。

function creatSS() {

  const id = SpreadsheetApp.create("新規SS").getId();
  const file = DriveApp.getFileById(id);
  console.log(file.getName());

}

fileSSに新規スプレッドシートのFileオブジェクトが格納されます。

実行をすると、ルートフォルダに「新規SS」が作成された上で、ログ出力に以下のように「新規SS」と取得したFileオブジェクト名が表示されます。

作成したスプレッドシートのファイル名をログ出力

GoogleドライブのフォルダをIDで取得する

次いで、今度は移動先となるフォルダをIDで指定して取得してみましょう。

GoogleドライブのフォルダをIDで指定して取得する場合は、DriveApp.getFolderByIdメソッドを使います。

DriveApp.getFolderById(ID)

これでGoogleドライブの特定のフォルダを変数として取得することができます。

フォルダのIDはGoogleドライブで目的のフォルダに移動した際のURLの

https://drive.google.com/drive/u/1/folders/{フォルダID}

{フォルダID}の部分です。

以下画像もご参考ください。

GoogleドライブのフォルダID

スクリプトを以下のように修正をして実行をしてみましょう。

const FOLDER_ID = '{フォルダID}';

function creatSS() {

  const id = SpreadsheetApp.create("新規SS").getId();
  const file = DriveApp.getFileById(id);
  const folder = DriveApp.getFolderById(FOLDER_ID);

  console.log(folder.getName());

}

実行をすると、ルートフォルダに「新規SS」が作成され、ログ出力にはフォルダ名「スプレッドシート作成・移動」が表示されるはずです。

これで、ファイルを目的のフォルダに移動する準備が整います。

まとめ

Google Apps ScriptでGoogleドライブのフォルダ、ファイルをID指定で取得する方法についてお伝えしました。

Googleドライブの世界ではIDは一意に決まりますので、パッと指定して取得できるのでとっても便利です。

getFileByIdメソッド、getFolderByIdメソッド合わせて覚えて頂ければと思います。

次回は、ファイルの移動・削除についてお伝えしていきます。

429 Too Many Requests

どうぞお楽しみに!

連載目次:GASでスプレッドシートを指定フォルダに作成する方法

Google Apps Scriptで新規のスプレッドシートを作成したい局面はたくさんありますが、常にルートフォルダにファイルができてしまい、ルートフォルダがぐちゃぐちゃに…てなことも。 このシリーズでは、Googleドライブのファイルやフォルダの操作を学びながら、指定のフォルダにスプレッドシートを作る方法をお伝えします。
  1. 初心者でも簡単!GASでスプレッドシートを作成する方法&取得する方法
  2. 基本中の基本!GASでGoogleドライブのファイル・フォルダをIDで取得する
  3. Google Apps ScriptでGoogleドライブ内のファイルを追加・削除・移動をする方法
タイトルとURLをコピーしました