【GAS】GoogleAppsScriptを用いてDrive上のファイルのIDを取得する方法


こんにちは!GoogleAppsScriptを使った業務効率化に夢中の初心者プログラマー、太郎です。

今日はGoogleAppsScript(GAS)を用いてDrive上のファイルのIDを取得する方法について書いていきたいと思います。

初心者向けですが、javascriptの基本的なルールは押さえておいた方が理解はしやすいと思いますので、まだの方はProgateでサクッとjavascriptの文法を学習してみてください。

ファイルの名前から取得する方法

GoogleDriveで使用するDriveAppクラスにはgetFilesByNameというメソッドがあります。このメソッドを使って、マイドライブの中にある「IDを取得したいドキュメント」というGoogleドキュメントファイルのIDを取得したいと思います。

コードはこんな感じ

function getFileId() {
  var targetFiles = DriveApp.getFilesByName('IDを取得したいドキュメント');
  var fileId = targetFiles.next().getId();
}

これで目当てのファイルIDが取得できます。
DriveApp.getFilesByNameで得られる値は、FileIteratorというデータ型で、取り出すときにはnext()を使う必要があるみたいです。
今回取得したのは一つのファイルですが、getFile「s」ByNameとなっていることからも、複数のデータ情報が入っているのが常らしく、next()でそのファイル一つ一つを取り出していくようです。
その場合、最後のファイルかどうかを判別するhasNext()といっしょに用いられ、

while (files.hasNext()) {
    var file = files.next();
    // do something

こんな風に記述されます。hasNext()は次のファイルがないときにFalseを返します。While文はFalseを返されると処理が止まるので、
次のファイルがないファイルまでたどり着いたら処理を止める
=最後のファイルにたどり着いたら処理を止める
=最初から最後までのファイルを取得する
こういうことです。うん???逆に分かりづらいかな。。。
要するに、hasNextとnextを使うと、取得したFiles(Foldsでもよし)のデータを全部取り出せるって言うことですね。

今回だとこう書けます

function getFileIdFromName() {
  var targetFiles = DriveApp.getFilesByName('IDを取得したいドキュメント');

  while (targetFiles.hasNext()) {
    var fileId = targetFiles.next().getId();
  }
}

以上がファイルの名前からIDを取得する方法になります。

URLからIDを取得する方法

ドライブ上に保存されているデータには、必ずIDがあり、URLがあります。そのURLからもIDを取得することができます。
ドライブのURLには共通の形があります。
https://drive.google.com/ファイル形式/よく分からない文字列/ID/閲覧情報
なので、「/(スラッシュ)」を区切りとして、文字情報を配列として取得して、ID部分だけを取り出すことができます。使うメソッドはsplitですね。

function getFileIdFromUrl() {
  var targetFileUrl = 'https://drive.google.com/ファイル形式/よく分からない文字列/ID/閲覧情報';//取得したいドライブ上のファイルのURLを入力

  var urlArray = targetFileUrl.split('/');
  var fileId = urlArray[5];
}

urlArrayを出力すると
[https:, , drive.google.com, ファイル形式, よく分からない文字列, ID, 閲覧情報]
こんな配列になっていることが分かります。取得したいIDはこの配列の6番目なので、urlArray[5]で取り出せる、というわけですね!

以上、GoogleAppsScriptを用いてDrive上のファイルのIDを取得する方法でした。
参考になれば嬉しいです!今後も様々トライしてみた結果を記事に書いていきたいと思います!