[GAS]Enumってなに?(初級編)

GAS

どうも。つじけ(tsujikenzo)です。このシリーズではEnum(イーナム)について初級・中級の2回に渡ってお送りします。今日は1回目で「Enum初級編」についてお届けします。

はじめましてEnumさん

「Enumがなんなのか?」という説明は大変奥の深いものになりますが、この記事を読んで頂いている方の多くは「Enumを操作する必要があった」「GAS Enumではネット記事があまりなかった」というお悩みをお持ちでないでしょうか。

こちらの記事にも書きましたが、何か新しいことを学習する時はまず「書き方を徹底して学ぶ」ことが大事です。

[プログラミング]プログラミング学習で挫折しないコツ #1
どうも。つじけ(tsujikenzo)です。今日は「プログラミング学習で挫折しないコツ」についてご紹介します。これからお話する内容は「プログラミングやりたいけど不安」「一度やってみたけど挫折してしまった」などの不安・経験がある方にお届けでき...

「コピペで動かしたことがある」という方も「なんとなくなら理解してるんだけど」と言う方もまずは「基礎の基礎」である「Enumの書き方」を習得しましょう。

Enumを呼び出す

GASにはあらかじめGoogleが用意したEnumが複数あります。それぞれのEnumにはあらかじめプロパティが定義されています。

例1:MimeType.JPEG ・・・Enum MimeTypeに定義されているJPEGプロパティ
例2:Permission.EDIT・・・Enum Permissionに定義されているEDITプロパティ
例3:ParagraphHeading.HEADING2・・・Enum ParagraphHeadingに定義されているHEADING2プロパティ

Enumのプロパティの呼び出し方はこうです。

Enum名.プロパティ

ここまで説明すると、GAS中級程度の方は「Enumってオブジェクトなの?」という疑問が湧くと思います。

const MimeType = {
JPEG,
GIF,
PDF
}
console.log(MimeType.JPEG);

EnumはEnumerateの略です。オブジェクトの中にプロパティを列挙したものになります。例にあげたMimeTypeオブジェクトの各プロパティには今は何も定義されていませんが、実際には

MimeType.JPEG = ‘JPEGとは何かを定義するありとあらゆる値’

のような値が定義されるとイメージしてください。(詳しくは次回以降にお届けします)

主なEnum

今日は初級編として3つのEnumをご紹介します。

  • ファイル形式を決めるEnum
  • フォルダ・ファイル権限を決めるEnum
  • ドキュメントの段落を設定するEnum

MIMEタイプ

Script ServicesのBaseサービスに所属するEnum MimeTypeは、ファイルの形式を識別する為の値が各プロパティに定義されています。

Enum MimeType  |  Apps Script  |  Google for Developers

「フォルダの中からcsvだけを抽出したい」「ファイルを作成したのでPDFとして保存したい」という時に各メソッドの引数にMimeType.プロパティを渡すことで処理を行うものです。

(MimeType.JPEGプロパティには’image/jpeg’、MimeType.PDFプロパティには’application/pdf’が定義されている為、引数にはどちらを渡しても問題ありません)

//マイドライブ直下に保存されているjpgファイルのファイル名をログ出力する
function myFunction() {

  const jpegs = DriveApp.getFilesByType(MimeType.JPEG);
  //const jpegs = DriveApp.getFilesByType(‘image/jpeg’);でも可

  let jpeg;
  while (jpegs.hasNext()) {
    jpeg = jpegs.next();
    console.log(jpeg.getName());
  }

}

海産物の写真が大量に・・・(失礼いたしました💦)

フォルダ・ファイルの権限

GWSのDriveサービスに所属するEnum Permissionは、フォルダ・ファイルの権限を操作する為の値が各プロパティに定義されています。

Enum Permission  |  Apps Script  |  Google for Developers

また、Enum Accessには、フォルダ・ファイルの共有範囲を操作する為の値が各プロパティに定義されています。

Enum Permission  |  Apps Script  |  Google for Developers

どちらも「編集者にしたい」「閲覧者にしたい」という時や「リンクを知っている全員がアクセスできる」に変更したいなど、各メソッドの引数にPermissionAccess.プロパティを渡すことで処理を行うものです。

//とあるフォルダの権限を「閲覧者」、共有範囲を「リンクを知っている全員がアクセスできる」に設定する

function myFunction2() {
const folder = DriveApp.getFolderById(FOLDERID);
folder.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
}

共有されたアイコンが付与され、権限と共有範囲が変更されました。

ドキュメントの段落設定

GWSのDocumentサービスに所属するEnum ParagraphHeadingは、ドキュメントの「見出し」を操作する為の値が各プロパティに定義されています。

Enum Permission  |  Apps Script  |  Google for Developers

「見出し2だけを抽出したい」や「見出し3を設定したい」という時に、各メソッドの引数にParagraphHeading.プロパティを渡すことで処理を行うものです。

まずこのようなドキュメントを用意します。

function myFunction3() {
//段落ごとのテキストを取得する
const parags = body.getParagraphs(); //[{},{}]
for (parag of parags) console.log(parag.getText());

//最終行に「これはGASで追加した見出し2です」という段落(テキスト)を追加し、「見出し2」を設定する
const body = DocumentApp.openById(DOCUMENTID).getBody();

const par2 = body.appendParagraph('これはGASで追加した見出し2です');
par2.setHeading(DocumentApp.ParagraphHeading.HEADING2);
}

段落ごとのテキストをそれぞれ取得できています。

見出し2の追加もできています。

まとめ

以上で「Enum初級編」として、実際に各Enumのサンプルを用意して書き方を学びました。全部覚える必要はありませんが書くことにストレスがないようになるくらいは何度も手を動かしてみましょう。とはいえ覚えるべきは

Enum.プロパティ

なので、皆さんはどのプロパティを呼び出したいかリファレンスで確認してタイプミスをしないよう心掛けるだけですね。

今回は呼び出すだけでしたが、次回は「Enum中級編」として、オリジナルのEnumを作ってみましょう。お楽しみに!

このシリーズの目次

タイトルとURLをコピーしました