公開日
変数シリーズ【第3回】プロパティです。
変数には型があり、一部の型にはプロパティという便利な機能があります。プロパティはどんなもので、どんな風に使えるかを知って活用していきましょう。
変数シリーズ【第1回】【第2回】の内容を踏まえて紹介しています。未読の方は、ぜひ第1回からご覧ください。
プロパティとは?
変数は値そのものの他に、プロパティ情報も持っています。プロパティとは対象の持つ設定・状態・属性などの情報のことです。PADではたとえば、前後にある空白を除去した後のテキスト値、テキスト値の文字数、データの個数・行数などがあります。変数と同じように値として使うことができ、非常に便利なものです。
どんなプロパティがあるかはデータ型によって異なります。(データの型については【第1回】参照)
まず元となる値を用意します。変数の設定 アクションを配置し、変数名と値を入力します。
%サンプル値% 値:あいうえお
この値のプロパティにはどんなものがあるか見てみましょう。
確認用にもうひとつ変数の設定 アクションを配置し、変数を作ります。値の変数の選択 {x} を開くと、さきほど作成した変数 サンプル値 があり、その左側にある > マークをクリックして開きます。
.(ドット)で始まる、.Lengthや.IsEmptyなどがプロパティです。プロパティ値自身にも型があることが解りますね。変数 サンプル値そのものではなく、プロパティ名をクリックしてから選択ボタンを押すと値にセットされます。サンプル値はテキスト型で、テキスト値には上図のようなプロパティがあります。
プロパティは%変数名.プロパティ名%と、%の内側で変数名の後にドットを付けて続けて書きます。変数同様手入力でもOKです。
今回はよく使うデータ型にどんなプロパティがあるか見ていきましょう。
プロパティ一覧
Microsoft公式ページに、各データ型ごとのプロパティ一覧があります。プロパティ名が翻訳されてしまっていますが、実際のプロパティ名は英語で表示されます。
プロパティを使う前にどんな値かしっかり確認しよう!
多くのプロパティは変数ペインでその値を確認できないため、変数に入れたり、ループ内ならメッセージウィンドウを使ったりして、使う前に確認すると確実です。
変数 サンプル値のプロパティを確認する変数を作ったら、実行して変数ペインで値を確認してみましょう。
テキスト値 .Trimmed
トリムはテキスト前後にある半角・全角スペース、改行、タブを除外した値を返します。サンプル値の値の前後にこれらを入れてみると上図のように確認できます。
トリムはさらに > マークがあり、トリム後の値に対するプロパティも使えるようになっています。
テキストのトリミング アクションと同じ効果がありますので、プロパティのトリムもぜひご活用ください。
テキスト値 .Length
テキストの文字数を返します。半角・全角スペース、改行、タブも含まれます。文字数制限がある値や何桁と決まっている時のチェックに使ったりできますね。
テキスト値 .IsEmpty
変数の値が空かどうかを返します。返る値はブール値型というもので、True(=はい・真)かFalse(=いいえ・偽)のどちらかです。これも値のチェックに使えそうです。
プロパティ名を見ただけではわかりにくいものもあります。
アクションでプロパティを使う時は、こうやって値を事前に確認することを徹底しましょう。
ファイルのプロパティ
プロパティが分かりやすいのがこのファイル型で、変数ペインでプロパティの値まで確認することができます。
フォルダー内のファイルを取得 アクションを配置して、任意のフォルダ内にあるファイルの一覧を取得してみましょう。
変数ペインで値を確認すると、変数 Files はリストファイルという型でした。これはファイル型の値だけを持つリストです。リストは1列で複数行の値が持てる型です。
この0行目の右端に 詳細表示 があるので開くと、このファイルのプロパティが表示されます。エクスプローラーのプロパティと同じ情報が確認できます。
リストの0番目は下図にあるように、%Files[0]% と表します。値がひとつしかなくても何番目か指定する必要がありますので注意してください。
何番目か指定できれば、%Files[0].Name% のようにプロパティを使用することができます。
変数 Filesは複数値を持つ型なので、Filesそのもののプロパティを見ると .Count(値の個数) しかありません。たとえばFor eachを使い、ひとつのファイルをCurrentItemに入れてから、%CurrentItem.Name% とすることでもプロパティを使うことができます。(For eachについては【第2回】参照)
メッセージを表示 アクションを使って、拡張子なしのファイル名を表示してみましょう。
ファイル名(.Name)、拡張子なしのファイル名(.NameWithoutExtension)、フォルダ名(.Directory)、作成日(.CreationTime)、更新日(.LastModified)あたりは、読み取ったファイルの情報として書き込むなどで使う機会があるのではないでしょうか。
日付・時間のプロパティ
日付・時間のDatetime型では、年月日、時分秒、曜日、1年のうち何日目、の各値を個別に取り出すことができます。
.Year、.Month などは数値(頭に0が付かない)
プロパティの年月日はそれぞれ数値型であるため、単純に並べてしまうと 202421 などとなってしまい、月・日がきちんと区別できなくなってしまうため注意が必要です。
プロパティ値を使って今月1日の日付を作成する方法
テキストをdatetimeに変換 アクションを使い、このように指定します。
変換するテキスト:%CurrentDateTime.Year%/%CurrentDateTime.Month%/1
間にスラッシュを入れて区切りを明確に、日にち部分には直接1をセットします。
Datetime型の1日日付を作成したら、加算する日時 アクションを使って1日前=前月末日付が取得できます。ある月の1日~月末までの範囲指定をしたい時に使えますね。
.DayOfWeek は英語表記
曜日(.DayOfWeek)はどんな形式で取得できるのか確認してみると、Thursdayと英語表記でした。日本語の曜日を取得したい場合は、プロパティではなくdatetimeをテキストに変換 アクションを使い、形式 'dddd'で木曜日、もしくは形式'ddd'で木(省略名)を指定します。
データテーブルのプロパティ
第2回で作成した変数 StaffListData を使って、データテーブルのプロパティを見てみましょう。(使えるデータテーブルがない方は第2回を参照して作ってみてください)
これもまた変数の設定 アクションを使ってそれぞれの値を変数ペインで表示します。
.RowsCount、.Columns.Count
データの行数(.RowsCount)、データの列数(.Columns.Count)、は分かりやすいですね。列数はリストである.Columnsの個数として.Countが使えます。
複数値を持つ変数ではデータ個数や、行列数を取り出せるため、Loop アクションを使うときに役立ちます。
終了には %StaffListData.RowsCount -1% (3-1 = 2)と設定します。-1しているのは、データの行番号が0から始まるためです。LoopIndexは0~2の行番号を指定するために使いますから、LoopIndexの最大値は行数-1とする必要があります。
データの行数値を使ってデータを下からループ処理する方法
Loop アクションを配置し、開始値:%StaffListData.RowsCount -1%、終了:0、増分:-1 とします。上からループするときは開始値を0にします(違うこともあります)が、開始値と終了を逆にするのです。
データを下から処理するのはどんな時に使うかというと、データテーブルの行を削除するときです(エクセルシートの行削除でも同様)。
データの上から処理をした場合(開始値 0 終了 2 増分 1)、0行目を削除すると下にあるデータの行番号が変わります。次のループでLoopIndexは1、行番号1を処理することになり、新0行目である旧1行目が処理されなくなってしまいます。
つまり、下から処理してしまえば、これから処理する上にあるデータがずれることはないため、漏れなく処理できるのです。
.Columnsと.ColumnHeadersRow
.Columnsと.ColumnHeadersRowはどちらも列名を取得する似たようなものなので、違いを比較しておきましょう。
内容は同じですが、リストとDatarowでそれぞれ型が違いますね。.ColumnHeadersRowは横並びですので、そのままエクセルに書き出して列名とし、その下にデータそのものであるStaffListData(の一部など)を書き出すような転記に使用すると便利です。
.IsEmpty
.IsEmptyはデータ有無を表します。Trueの場合、行数 0 = (列名はあるが)データがないと判定できます。
<新しく登場したデータ型おさらい>
ブール値型 True/False、ファイル型、リスト型
プロパティとその使いどころを共に紹介してみましたが、使う場面がイメージできてきたでしょうか?機会があればプロパティの存在を思い出して、ぜひ試してみてください。変数シリーズ【第4回】ではリストを紹介します。