初心者でもわかるGoogle Apps Script活用のススメ

GASでドライブのフォルダ/ファイルの関連情報を取得してみる

今回の記事では、Googleドライブ上に保存されたフォルダやファイルから紐づく情報を取得してくる方法をご紹介します。

ファイルを取得したあとに、色々な処理につなげるためには、この記事でご紹介する方法が多分に使えると思いますので、ぜひ皆さんに読んでほしい内容となっています。

フォルダやファイルを取得する方法については、別記事を用意していますので、今回は取得した後にどんな情報が取得できるのかという点に焦点を当てていきます。

本記事が役立つターゲット読者

  • 取得したフォルダやファイルから情報を取得したい方
  • 取得したファイルやフォルダの関連情報をその他の処理に流用したい方
  • ファイルやフォルダを取得した後に何ができるか知りたい方

フォルダやファイルから関連情報を取得するコード

本ページでは、フォルダやファイルから関連情報を取得する方法をご紹介します。

  1. getAs(ファイル形式を指定してBlobデータを取得)
  2. getBlob(Blobデータを取得)
  3. getDateCreated(フォルダ / ファイルの作成日を取得)
  4. getDescription(ファイルの詳細説明を取得)
  5. getDownloadUrl(ファイルのダウンロードURLを取得)
  6. getId(フォルダID / ファイルIDを取得)
  7. getLastUpdated(フォルダ / ファイルの最終更新日を取得)
  8. getName(フォルダ名 / ファイル名を取得)
  9. getParents(親フォルダを取得)
  10. getResourceKey(URLを知っている人がアクセスできるファイルのリソースキーを取得)
  11. getSecurityUpdateEligible(セキュリティアップデートを適用されているか取得)
  12. getSecurityUpdateEnabled(セキュリティアップデートが適用され、URLアクセス時にリソースキーが必要か取得)
  13. getSize(ファイル容量を取得)
  14. getTargetId(ショートカット元ファイルのIDを取得)
  15. getTargetMimeType(ショートカット元ファイルのMimeTypeを取得)
  16. getTargetResourceKey(ショートカット元ファイルのリソースキーを取得)
  17. getThumbnail(サムネイル画像を取得)
  18. getUrl(ファイルのURLを取得)

Blobデータと言う聞き慣れない用語も出てきましたが、用語の説明も入れてから本題に入っていきたいと思います。

Blobデータってなに?

と言っても、用語については私も正確には理解していないので、より詳しいサイトの説明を引用させていただきます。

BLOBとは、データベースのフィールド定義などで用いられるデータ型の一つで、テキスト(文字列)や整数のように既存のデータ型としては用意されていない任意のバイナリデータを格納するためのもの。

IT用語辞典 e-Words(https://e-words.jp/w/BLOB.html)

私の認識としては、ファイルデータという認識です。厳密にはもっと深いのだと思いますが、詳しい方がいればコメントにて補足いただければ幸いです。

例えば、Googleドライブ上のPDFのBlobデータを取得して、Gmailでファイルを添付して送信するなんて言うことができます。

記事で紹介するメソッド一覧

フォルダやファイルを取得後に取得できるコードをご紹介

  1. getAs(contentType) – ファイルにのみ利用可
  2. getBlob() – ファイルにのみ利用可
  3. getDateCreated() – フォルダ / ファイル両方に利用可
  4. getDescription() – フォルダ / ファイル両方に利用可
  5. getDownloadUrl() – ファイルにのみ利用可
  6. getId() – フォルダ / ファイル両方に利用可
  7. getLastUpdated() – フォルダ / ファイル両方に利用可
  8. getMimeType() – ファイルにのみ利用可
  9. getName() – フォルダ / ファイル両方に利用可
  10. getParents() – フォルダ / ファイル両方に利用可
  11. getResourceKey() – フォルダ / ファイル両方に利用可
  12. getSecurityUpdateEligible() – フォルダ / ファイル両方に利用可
  13. getSecurityUpdateEnabled() – フォルダ / ファイル両方に利用可
  14. getSize() – ファイルにのみ利用可
  15. getTargetId() – ファイルにのみ利用可
  16. getTargetMimeType() – ファイルにのみ利用可
  17. getTargetResourceKey() – ファイルにのみ利用可
  18. getThumbnail() – ファイルにのみ利用可
  19. getUrl() – フォルダ / ファイル両方に利用可

結構色々な情報が取得できますよね。
今回紹介するサンプルコードは下記のサンプルコードボタンより確認・実行をすることができます。

初回実行時には、プログラムに許可を求められますので、下記の記事を参考に許可を進めてみてください。

サンプルコードが開けない場合は、ブラウザのシークレットモードで開いてみてください。
※ 企業のコーポレートポリシーによって、ログインしていると開けない設定になっている場合があります。

上記に含まれていないもので、すでに個別の記事を書いてあるものもありますので、下記の関連記事も参考にご覧ください。

今回は挙動を確認できるようにウェブアプリ形式の動作確認サイトも用意しました。

ただ、ボタンだらけで相当分かりづらいかもしれません。

ウェブアプリが開けない場合は、ブラウザのシークレットモードで開いてみてください。
※ 企業のコーポレートポリシーによって、ログインしていると開けない設定になっている場合があります。

getAs(contentType)のサンプルコード

引数に入れる値

contentTypeに指定できるほとんどのBlobデータに利用できるMIMEタイプは、『application/pdf』のみとなり、PDFに変換する際に利用します。

ただし、対象ファイルが画像の場合は、変換したいファイル形式によって下記のMIMEタイプが指定できます。

ファイル形式MIMEタイプ
BMPファイルimage/bmp
GIFファイルimage/gif
JPEGファイルimage/jpeg
PNGファイルimage/png

サンプルコード

const SAMPLE_SHEET_ID = "11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18"; //https://docs.google.com/spreadsheets/d/11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18/
//スプレッドシートをPDFファイルに変換してBlobデータを取得するコード
function sampleCodeForGetAs() {
  let file = DriveApp.getFileById(SAMPLE_SHEET_ID);
  let fileName = file.getName() + ".pdf";
  let blob = file.getAs("application/pdf").setName(fileName);
  let rootFolder = DriveApp.getRootFolder();
  rootFolder.createFile(blob);
}

変数の説明

SAMPLE_SHEET_ID = PDF変換対象のスプレッドシートID
file = スプレッドシートファイル
fileName = ファイル名を取得(スプレッドシートの場合拡張子が見えないため、.pdfを明示してあげます)
blob = PDF変換後のスプレッドシートファイル
rootFolder = マイドライブフォルダ

サンプルプログラムでは、スプレッドシートをPDFに変換してマイドライブ直下にPDFファイルを作成します。

スプレッドシートファイルに限らず、GoogleドキュメントやGoogleスライドなどのファイルもPDFに変換することができます

スプレッドシートやGoogleドキュメントなどは、Googleドライブ上で拡張子が設定されていませんので、PDF化したファイルに名前をつける際は『.pdf』をファイル名に追加してあげましょう

Googleドライブ上ではPDF拡張子がなくてもPDFとして認識されますが、パソコン用の同期クライアントを使っている場合、ローカルパソコン上では拡張子が設定されていないとファイルを開くことができません

ファイルを変換しただけではGoogleドライブに保存されませんので、ファイルの保存が必要な場合はcreateFileメソッドを使ってファイルを任意のフォルダに保存します。

変換後のファイルをGoogleドライブに保存するときはcreateFileメソッドを使おう

getBlob()のサンプルコード

GoogleドライブのファイルをBlobデータとして取得します。

取得したBlobデータは様々な処理に利用することができます。

  • Googleドライブ上でファイル作成
  • 元ファイルへの共有権限を付与せずにファイルをダウンロードさせる
  • メールに添付する などなど

引数に入れる値

引数の指定なし

サンプルコード

const IMAGE_ID = "1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2"; //https://drive.google.com/file/d/1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2/view?usp=sharing
//PNG画像ファイルのBlobデータを取得するコード
function sampleCodeForGetBlob() {
  let file = DriveApp.getFileById(IMAGE_ID);
  let fileName = file.getName();
  let blob = file.getBlob().setName(fileName);
  let rootFolder = DriveApp.getRootFolder();
  rootFolder.createFile(blob);
}

変数の説明

IMAGE_ID = 画像ファイルID
file = スプレッドシートファイル
fileName = ファイル名を取得(スプレッドシートの場合拡張子が見えないため、.pdfを明示してあげます)
blob = 画像ファイルのBlobデータ
rootFolder = マイドライブフォルダ

上記サンプルでは、Googleドライブに保存されている画像ファイルをBlobデータで取得して、マイドライブに新たに画像ファイルを作成するコードになっています。

サンプルではsetNameでBlobデータに名前を付けていますが、元ファイルとファイル名が同じであれば指定する必要はありません。

Blobデータを使ってGoogleドライブ上に新しファイルを作成するだけでなく、Gmailでファイルを添付したりすることができます。

//PNG画像ファイルのBlobデータをメール添付で送信するコード
function sampleCodeForSendGmailWithBlobAttached() {
  let file = DriveApp.getFileById(IMAGE_ID);
  let fileName = file.getName();
  let blob = file.getBlob().setName(fileName);
  let recipient = Session.getActiveUser().getEmail();
  let subject = "メール添付テスト";
  let body = "Blobデータをメールに添付して送信するテストメール";
  let options = {
    attachments: [blob],
  }
  MailApp.sendEmail(recipient, subject, body, options);
}

Blobデータはメールへのファイル添付にも使える

getDateCreated()のサンプルコード

対象のファイルの作成日時を取得するコード

引数に入れる値

引数の指定なし

サンプルコード

const SAMPLE_SHEET_ID = "11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18"; //https://docs.google.com/spreadsheets/d/11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18/
//ファイルの作成日時を取得するコード
function sampleCodeForGetDateCreated() {
  let file = DriveApp.getFileById(SAMPLE_SHEET_ID);
  let createDate = file.getDateCreated();
  createDate = Utilities.formatDate(createDate, "JST", "yyyy年MM月dd日 HH時mm分ss秒");
  console.log(createDate);
}

変数の説明

SAMPLE_SHEET_ID = 対象のスプレッドシートID
file = スプレッドシートファイル
createDate = ファイル作成日時

上記サンプルコードでは対象ファイルの作成日時を取得するコードを作成しました。

上記のように非常に簡単にファイルの作成日時を取得することができます

もし取得した作成日時をウェブアプリに返したい場合は、日付オブジェクトを文字列や数値に変換してから渡すようにしましょう

日付オブジェクトはウェブアプリに返すことのできないデータ形式です

日付オブジェクトを任意のフォーマットの文字列に変換する場合は、サンプルコードのようにUtilities.formatDate(date, timeZone, format)メソッドを利用します。

  • 引数dateには日付オブジェクト
  • 引数timeZoneにはタイムゾーンを指定します『JST』はJapan Standard Time(日本標準時間)を表します
  • 引数formatには、日付フォーマットを指定します。

日付フォーマットで、指定できるのはSimpleDateFormat形式です。(参考ドキュメント【英文】

getDescription()のサンプルコード

ファイルの詳細説明欄に記載された文字列を取得します。

ファイルの詳細説明欄とは、下記の赤枠で囲われた部分です。

引数に入れる値

引数の指定なし

サンプルコード

const SAMPLE_SHEET_ID = "11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18"; //https://docs.google.com/spreadsheets/d/11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18/
//ファイルの説明を取得するコード
function sampleCodeForGetDescription() {
  let file = DriveApp.getFileById(SAMPLE_SHEET_ID);
  let description = file.getDescription();
  console.log(description);
}

変数の説明

SAMPLE_SHEET_ID = 対象のスプレッドシートID
file = スプレッドシートファイル
description = ファイルの詳細説明

ファイルの詳細説明を取得するコードです。

サンプルファイルでは、出力ログに『サンプルスプレッドシートの詳細説明』という文字列が出力されます。

Googleドライブの検索機能では、詳細説明欄に記載された文字列も含めて検索ができますので、画像などにキーワードを設定しておくと文字で画像データを検索できるようになります

詳細説明欄をうまく活用すれば今まで検索できなかったファイルが検索できるように

getDownloadUrl()のサンプルコード

ファイルのダウンロードURLを取得することができます。

引数に入れる値

引数の指定なし

サンプルコード

const IMAGE_ID = "1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2"; //https://drive.google.com/file/d/1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2/view?usp=sharing
//ファイルのダウンロードURLを取得するコード
function sampleCodeForGetDownloadUrl() {
  let file = DriveApp.getFileById(IMAGE_ID);
  let downloadUrl = file.getDownloadUrl();
  console.log(downloadUrl);
}

変数の説明

IMAGE_ID = 画像ファイルID
file = 画像ファイル
downloadUrl = ファイルのダウンロード用URL

上記サンプルコードでは、ファイルのダウンロード用URLが取得できます。

ダウンロードURLは『https://drive.google.com/uc?id= {{FILE_ID}}&export=download』という構成になっていますので、ファイルのIDさえわかればプログラムでも簡単に生成することは可能です。

getId()のサンプルコード

ファイルIDを取得するコード

引数に入れる値

引数の指定なし

サンプルコード

const IMAGE_ID = "1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2"; //https://drive.google.com/file/d/1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2/view?usp=sharing
//ファイルのIDを取得するコード
function sampleCodeForGetId() {
  let file = DriveApp.getFileById(IMAGE_ID);
  let fileId = file.getId();
  console.log(fileId);
}

変数の説明

IMAGE_ID = 画像ファイルID
file = 画像ファイル
fileId = 取得したファイルID

上記サンプルでは、IDで取得した画像ファイルのIDをプログラムで取得しているので、ほとんど実用性のないコードになっていますが、実際の使用例では、検索クエリなどで取得したファイル群から、IDを取得してSpreadsheetAppのコードに繋げたりする際に用います

ファイルIDはGASを使用した業務効率化において必要不可欠な要素ですので、IDの取得方法は身につけてしまいましょう。プログラム以外でファイルIDを取得する方法は、ファイルのURLから取得する方法があります。

たとえば、『https://docs.google.com/spreadsheets/d/11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18/edit?usp=sharing』というスプレッドシートのURLでは、ハイライトした部分がファイルIDになっています。

getLastUpdated()のサンプルコード

対象のファイルの最終更新日時を取得するコード

引数に入れる値

サンプルコード

const SAMPLE_SHEET_ID = "11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18"; //https://docs.google.com/spreadsheets/d/11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18/
//ファイルの最終更新日時を取得するコード
function sampleCodeForGetLastUpdated() {
  let file = DriveApp.getFileById(SAMPLE_SHEET_ID);
  let updatedDate = file.getLastUpdated();
  updatedDate = Utilities.formatDate(updatedDate, "JST", "yyyy年MM月dd日 HH時mm分ss秒");
  console.log(updatedDate);
}

変数の説明

SAMPLE_SHEET_ID = 対象のスプレッドシートID
file = スプレッドシートファイル
updatedDate = 最終更新日時

上記サンプルコードでは対象ファイルの最終更新日時を取得するコードを作成しました。

作成日時と同じように、非常に簡単に最終更新日を取得できます

もし取得した最終更新日時をウェブアプリに返したい場合は、日付オブジェクトを文字列や数値に変換してから渡すようにしましょう

日付オブジェクトはウェブアプリに返すことのできないデータ形式です

日付オブジェクトを任意の日付フォーマットの文字列に変換する場合は、サンプルコードのようにUtilities.formatDate(date, timeZone, format)メソッドを利用します。

  • 引数dateには日付オブジェクト
  • 引数timeZoneにはタイムゾーンを指定します『JST』はJapan Standard Time(日本標準時間)を表します
  • 引数formatには、日付フォーマットを指定します。

日付フォーマットで、指定できるのはSimpleDateFormat形式です。(参考ドキュメント【英文】

getMimeType()のサンプルコード

ファイルのMIMEタイプを取得するコード

取得できるMIMEタイプ

拡張子MIMEタイプ
Google Docsapplication/vnd.google-apps.document
Google Formsapplication/vnd.google-apps.form
Google My Mapsapplication/vnd.google-apps.map
Google Slidesapplication/vnd.google-apps.presentation
Google Apps Scriptapplication/vnd.google-apps.script
Google Sitesapplication/vnd.google-apps.site
Google Sheetsapplication/vnd.google-apps.spreadsheet
xlsapplication/vnd.ms-excel
xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xmltext/xml
odsapplication/vnd.oasis.opendocument.spreadsheet
csvtext/csv
tmpltext/plain
pdfapplication/pdf
phpapplication/x-httpd-php
jpgimage/jpeg
pngimage/png
gifimage/gif
bmpimage/bmp
txttext/plain
docapplication/msword
jstext/js
swfapplication/x-shockwave-flash
mp3audio/mpeg
zipapplication/zip
rarapplication/rar
tarapplication/tar
arjapplication/arj
cabapplication/cab
htmltext/html
htmtext/htm
defaultapplication/octet-stream
shortcutapplication/vnd.google-apps.shortcut

引数に入れる値

引数の指定なし

サンプルコード

const SAMPLE_SHEET_ID = "11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18"; //https://docs.google.com/spreadsheets/d/11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18/
//ファイルのMimeTypeを取得するコード
function sampleCodeForGetMimeType() {
  let file = DriveApp.getFileById(SAMPLE_SHEET_ID);
  let mimeType = file.getMimeType();
  console.log(mimeType);
}

変数の説明

SAMPLE_SHEET_ID = 対象のスプレッドシートID
file = スプレッドシートファイル
mimeType = 対象ファイルのMIMEタイプ

上記のサンプルコードを実行すると対象ファイルのファイルタイプが何のファイルタイプなのかを取得することができます。
今回の対象ファイルはスプレッドシートですので、ログには『application/vnd.google-apps.spreadsheet』が出力されます。

ファイルのタイプによって処理を分岐させたいときに有効です。

getName()のサンプルコード

フォルダ名 / ファイル名を取得するコード

引数に入れる値

引数の指定なし

サンプルコード

const SAMPLE_SHEET_ID = "11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18"; //https://docs.google.com/spreadsheets/d/11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18/
//ファイル名を取得するコード
function sampleCodeForGetName() {
  let file = DriveApp.getFileById(SAMPLE_SHEET_ID);
  let fileName = file.getName();
  console.log(fileName);
}

変数の説明

SAMPLE_SHEET_ID = 対象のスプレッドシートID
file = スプレッドシートファイル
fileName = ファイル名

取得した対象ファイルのファイル名を取得します。
ファイル名に拡張子が含まれていれば拡張子も含めてファイル名を取得できます。

getParents()のサンプルコード

フォルダ / ファイルが格納されているフォルダをイテレータで取得します。

引数に入れる値

引数の指定なし

サンプルコード

const SAMPLE_SHEET_ID = "11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18"; //https://docs.google.com/spreadsheets/d/11Tzg6togdpKRK9o1MI8SCXMizJeTBWjZRhMFdqXdp18/
//親フォルダのフォルダオブジェクトを取得するコード
function sampleCodeForGetParents() {
  let file = DriveApp.getFileById(SAMPLE_SHEET_ID);
  let parentFolder = file.getParents().next();
  let parentFolderName = parentFolder.getName();
  console.log(parentFolderName);
}

変数の説明

SAMPLE_SHEET_ID = 対象のスプレッドシートID
file = スプレッドシートファイル
parentFolder = 親フォルダ
parentFolderName = 親フォルダ名

皆さん、少し違和感を感じるかもしれませんが、getParentsメソッドは実は複数形になっています。getParentsメソッドが複数なのには理由があります。

以前のGoogleドライブでは、フォルダ / ファイルが複数の親フォルダを持つことが可能でした。

そのため、getParentsメソッドは複数形のメソッドになっています。
しかしながら、2020 年9月3日にGoogleドライブにショートカット作成機能が追加されたことで、1つのファイルやフォルダを複数の親フォルダに保存する必要がなくなり、それと同時に、複数のフォルダに格納することができなくなりました。

以前の名残がそのままメソッドに残り続けているために、getParentsメソッドは複数形のままになっています。

現在は複数のフォルダにファイルを格納することができませんので、近い将来getParentsメソッドは単数形に変わるかもしれませんね。

getParentsメソッドではフォルダイテレータが取得されますが、格納されるフォルダは常に1つしかありませんので、getParentsメソッドは常にgetParents().next()という形で利用するということを覚えておきましょう

nextメソッドと併用することで、親フォルダのフォルダオブジェクトを取得します

getResourceKey()のサンプルコード

ファイルのリソースキーを取得するコード

リソースキーとは

Googleが2021年9月13日に適用したセキュリティアップデートに関連するパラメータです。
それまでのGoogleドライブのファイルでは、共有リンクを取得する

https://drive.google.com/file/d/{{FILE_ID}}/view?usp=sharing

という形式でリンクが生成されていました。

ところが、セキュリティアップデート適用後、ある条件を満たすファイルについてはresourceKeyというパラメータが付与されるということです。

セキュリティアップデートを適用されたファイルのリンクURLを取得すると、

https://drive.google.com/file/d/{{FILE_ID}}/view?usp=sharing?resourcekey={{RESOURCEKEY}}

という形で生成されることになります。

今までは、ファイルIDさえわかればフォルダやファイルにアクセスできていたところが、リソースキーというものが必要になる場合があり、よりセキュリティ性が向上することになるようです。

詳しい説明については、Googleドライブのヘルプページを参照してください。
ヘルプを見る限りでは、スプレッドシートやスライド等のファイルは影響を受けないようです。

私の場合は、その他のファイルでセキュリティアップデートを適用しようとしましたが、

上部の検索バーに、「is:security_update_applied」または「is:security_update_removed」と入力します。

Googleドライブヘルプページ

を検索してもファイルが一つも引っかからないので適用ができませんでしたね。

まぁとにかく、アクセスにリソースキーが必要なファイルであればgetResourceKeyメソッドでリソースキーを取得できることになります。

引数に入れる値

引数の指定なし

サンプルコード

const IMAGE_ID = "1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2"; //https://drive.google.com/file/d/1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2/view?usp=sharing
//ファイルのリソースキーを取得するコード
function sampleCodeForGetResourceKey() {
  let file = DriveApp.getFileById(IMAGE_ID);
  let resourceKey = file.getResourceKey();
  console.log(resourceKey);
}

変数の説明

IMAGE_ID = 画像ファイルID
file = 画像ファイル
resourceKey = リソースキー

サンプルコードでは、対象のファイルのリソースキーを取得します。

もしセキュリティアップデートが適用されておらず、リソースキーが必要なければnullが返されます

getSecurityUpdateEligible()のサンプルコード

セキュリティアップデートを適用されているか取得するコード

引数に入れる値

引数の指定なし

サンプルコード

const IMAGE_ID = "1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2"; //https://drive.google.com/file/d/1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2/view?usp=sharing
//ファイルがセキュリティアップデートを適用されているかを取得するコード
function sampleCodeForGetSecurityUpdateEligible() {
  let file = DriveApp.getFileById(IMAGE_ID);
  let boolean = file.getSecurityUpdateEligible();
  console.log(boolean);
}

変数の説明

IMAGE_ID = 画像ファイルID
file = 画像ファイル
boolean = 真偽値(true / false)

セキュリティアップデートが適用されているかどうかを取得します。

適用されていればTRUE

適用されていなければFALSE

が返されます。

getSecurityUpdateEnabled()のサンプルコード

URLアクセス時にリソースキーが必要か取得するコード

私の場合、リソースキーが必要ないファイルなのにTRUEが返されるので、ちゃんと機能していない可能性があります。(2022年6月現在)

引数に入れる値

引数の指定なし

サンプルコード

const IMAGE_ID = "1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2"; //https://drive.google.com/file/d/1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2/view?usp=sharing
//ファイルにURLアクセスする際、リソースキーが必要か取得
function sampleCodeForGetSecurityUpdateEnabled() {
  let file = DriveApp.getFileById(IMAGE_ID);
  let boolean = file.getSecurityUpdateEnabled();
  console.log(boolean);
}

変数の説明

IMAGE_ID = 画像ファイルID
file = 画像ファイル
boolean = 真偽値

URLアクセス時にリソースキーが必要かどうかを取得します。

必要であればTRUE

必要がなければFALSE

が返されます。

getSize()のサンプルコード

ファイル容量をバイト単位で取得するコード

引数に入れる値

引数の指定なし

サンプルコード

const IMAGE_ID = "1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2"; //https://drive.google.com/file/d/1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2/view?usp=sharing
//ファイル容量を取得するコード
function sampleCodeForGetSize() {
  let file = DriveApp.getFileById(IMAGE_ID);
  let size = Math.round(file.getSize() / 1000) + "KB";
  console.log(size);
}

変数の説明

IMAGE_ID = 画像ファイルID
file = 画像ファイル
size = ファイル容量(KB単位)

ファイル容量をバイト単位で取得します。

単位を変更したければ、割り算をしてください。

単位割る数
KB(キロバイト)1000
MB(メガバイト)1000000
GB(ギガバイト)1000000000

サンプルコードでは、Math.roundというメソッドを使って小数点以下を四捨五入しています。

getTargetId()のサンプルコード

対象のフォルダやファイルがショートカットファイルの場合、ショートカット参照元のファイルIDを取得するコード

引数に入れる値

引数の指定なし

サンプルコード

const FOLDER_ID = "1iWnUXfI8vl_6XHuKhCvH9abMQM7pVlDE"; //https://drive.google.com/drive/folders/1iWnUXfI8vl_6XHuKhCvH9abMQM7pVlDE
//ショートカットの参照元ファイルIDを取得するコード
function sampleCodeForGetTargetId() {
  let folder = DriveApp.getFolderById(FOLDER_ID);
  let files = folder.getFiles();
  let targetId;
  while (files.hasNext()) {
    let file = files.next();
    if (file.getMimeType() === "application/vnd.google-apps.shortcut") {
      targetId = file.getTargetId();
      break;
    }
  }
  console.log(targetId);
}

変数の説明

FOLDER_ID = フォルダID
folder = 対象フォルダ
files = 対象フォルダ内のすべてのファイル
file = 対象フォルダ内の1ファイル
targetId = ショートカットが参照しているファイルID

ショートカットファイルの場合は、そのファイル自体にも固有のファイルIDは付与されているのですが、実際のファイルIDではないため、例えばスプレッドシートを参照しているショートカットファイルだとしてもSpreadsheetApp.openByIdなどでショートカットファイルのIDを指定してもスプレッドシートファイルを取得することができません

そのため、参照元のファイルIDが必要になる場合が出てくるのです。

getTargetIdメソッドはそういう時のために利用することになります。

ショートカットファイルはファイルの実態ではないので、操作する場合は参照元IDを取得する

getTargetMimeType()のサンプルコード

対象のフォルダやファイルがショートカットファイルの場合、ショートカット参照元のMIMEタイプを取得するコード

引数に入れる値

引数の指定なし

サンプルコード

const FOLDER_ID = "1iWnUXfI8vl_6XHuKhCvH9abMQM7pVlDE"; //https://drive.google.com/drive/folders/1iWnUXfI8vl_6XHuKhCvH9abMQM7pVlDE
//ショートカットの参照元ファイルのMIMEタイプを取得するコード
function sampleCodeForGetTargetMimeType() {
  let folder = DriveApp.getFolderById(FOLDER_ID);
  let files = folder.getFiles();
  let mimeType;
  while (files.hasNext()) {
    let file = files.next();
    if (file.getMimeType() === "application/vnd.google-apps.shortcut") {
      mimeType = file.getTargetMimeType();
      break;
    }
  }
  console.log(mimeType);
}

変数の説明

FOLDER_ID = フォルダID
folder = 対象フォルダ
files = 対象フォルダ内のすべてのファイル
file = 対象フォルダ内の1ファイル
mimeType = ショートカットが参照しているファイルのMIMEタイプ

ショートカットが参照しているファイルのMIMEタイプを取得します。

getTargetResourceKey()のサンプルコード

対象のフォルダやファイルがショートカットファイルの場合、ショートカット参照元のリソースキーを取得するコード

引数に入れる値

引数の指定なし

サンプルコード

const FOLDER_ID = "1iWnUXfI8vl_6XHuKhCvH9abMQM7pVlDE"; //https://drive.google.com/drive/folders/1iWnUXfI8vl_6XHuKhCvH9abMQM7pVlDE
//ショートカット参照元ファイルのMIMEタイプを取得するコード
function sampleCodeForGetTargetResourceKey() {
  let folder = DriveApp.getFolderById(FOLDER_ID);
  let files = folder.getFiles();
  let resourceKey;
  while (files.hasNext()) {
    let file = files.next();
    if (file.getMimeType() === "application/vnd.google-apps.shortcut") {
      resourceKey = file.getTargetResourceKey();
      break;
    }
  }
  console.log(resourceKey);
}

変数の説明

FOLDER_ID = フォルダID
folder = 対象フォルダ
files = 対象フォルダ内のすべてのファイル
file = 対象フォルダ内の1ファイル
resourceKey = ショートカットが参照しているファイルのリソースキー

対象のフォルダやファイルがショートカットファイルの場合、ショートカット参照元のリソースキーを取得します。

リソースキーが必要ない場合はnullが返されます。

getThumbnail()のサンプルコード

対象ファイルのサムネイルデータをBlob形式で取得します。

引数に入れる値

引数の指定なし

サンプルコード

const IMAGE_ID = "1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2"; //https://drive.google.com/file/d/1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2/view?usp=sharing
//PNG画像ファイルのサムネイルデータを取得するコード
function sampleCodeForGetThumbnail() {
  let file = DriveApp.getFileById(IMAGE_ID);
  let fileName = file.getName();
  let thumbnail = file.getThumbnail().setName(fileName);
  let rootFolder = DriveApp.getRootFolder();
  rootFolder.createFile(thumbnail);
}

変数の説明

IMAGE_ID = 画像ファイルID
file = 画像ファイル
fileName = 画像ファイル名
thumbnail = サムネイルのBlobデータ
rootFolder = マイドライブフォルダ

サムネイル画像を取得するコードです。
サムネイル画像が無いファイルについては、nullが返されます。

サムネイル画像のサイズ上限は横1600px ✕ 縦 900pxです。

それ以上の大きさのサイズの場合は、自動的に上限に収まるようにリサイズされます

ファイルの共有URLを取得するコード

getUrl()のサンプルコード

引数に入れる値

引数の指定なし

サンプルコード

const IMAGE_ID = "1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2"; //https://drive.google.com/file/d/1ABX5h7xUsQUziFbBMGV6mNdi_UDpxxR2/view?usp=sharing
//ファイルの共有URLを取得するコード
function sampleCodeForGetUrl() {
  let file = DriveApp.getFileById(IMAGE_ID);
  let fileUrl = file.getUrl();
  console.log(fileUrl);
}

変数の説明

IMAGE_ID = 画像ファイルID
file = 画像ファイル
fileUrl = ファイルの共有URL

ファイルの共有リンクURLを取得するコードです。

共有URLは『https://drive.google.com/file/d/{{FILE_ID}}/view?usp=drivesdk』という形式のURLです。

getDownloadUrlで取得できるURLとの違いは、ダウンロードURLの場合はファイルのダウンロード画面が表示されますが、共有リンクURLの場合は、ファイルをGoogleドライブ上で開く形になります。

まとめ

今回の記事は様々なメソッドのサンプルコードを共有しましたので、かなりボリュームのある記事になってしまいました。

フォルダやファイルを取得したあとにどのようなことができるのか、イメージを掴むことはできたと思います。

ご紹介したメソッドを組み合わせて、日々の業務効率の改善に役立ててください。

Exit mobile version