Power Automate Desktopの変数（2）「テキスト型」

##　概要  

Power Automate Desktop(以下PAD) の変数についての記事2回目「テキスト型」です。PADのベース言語Robinのドキュメントを参考に試したものをまとめました。「変数の設定」アクションを中心に簡略化した例を挙げながら整理してみようと思います。全7回の予定です。

## 目次

1. [概要、数値型](https://qiita.com/sys_zero/items/13e06a41834cf40988ea)
2. **[テキスト型](https://qiita.com/sys_zero/items/0f5b54dd4dbbf0d31e71)**<今回の記事>
3. [Datetime型](https://qiita.com/sys_zero/items/7804ffffea5b244c46c4)
4. [ブール型](https://qiita.com/sys_zero/items/68deda047c4b50c66458)
5. [リスト型](https://qiita.com/sys_zero/items/82951049466791b2b728)
6. [データテーブル型](https://qiita.com/sys_zero/items/171d73ba24e123dd1b66)
7. [カスタムオブジェクト型](https://qiita.com/sys_zero/items/6006ab42e2af60c170b5)

## 注意

- すでに使いこなしているかた向けの記事ではありません。
- RobinはPADのベースとなっていますが挙動が異なる部分があります。
- この記事の内容はすべて試していますが公式の見解とは異なる可能性がありますのでご注意ください。
- Power Automateクラウドフローの入出力変数については触れていません。
- 2021年2月の記事です。
- あくまでも個人のまとめです。
- 誤りがありましたらコメントでご指摘いただけると幸いです。
- Robinの公式サイトは2021年4月30日に終了しました。

## テキスト型変数について　　

テキスト型変数はテキスト値を格納している変数です。変数名の制限については各変数型と共通です。テキスト値としてはすべての記号、文字や言葉を使用できます。ただしPADでは「**半角%**」は特別な意味を持ちますのでテキスト値として使用する場合でも注意が必要です。
![2021-02-14-15-33-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/4257fbc5-d323-4a46-2666-7aec035b336b.png)

Robin言語では\（バックスラッシュ）をエスケープ文字として使用可能ですが「\\%」としてもエラーになります。文字として半角%を表示させたい場合は「%%」として%を%でエスケープします。あるいは「%'%'%」と表記します。例「5%」→「5%%」または「5%'%'%」とします。

## テキスト型変数のプロパティ　　

テキスト型の変数は次のようなプロパティを持ちます。

![2021-02-14-16-24-08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/40b109b1-ccb2-ae94-5805-8e99175ab48a.png)

![2021-02-14-16-25-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/acf3ea5c-fc1d-8d96-6be8-0a4da77b3990.png)


テキスト型変数のプロパティは別の変数から利用することができます。マーカーの部分から選択できます。
![2021-02-14-16-30-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/4d4a3d06-c056-7809-632a-4e79e1c8d4d4.png)

「.Length」文字数が数値で返されます。
![2021-02-14-16-31-47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/41d36cba-f806-684b-3d52-6b1a87b69160.png)

![2021-02-14-16-32-24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/7d4cd754-bc72-aee6-4a5c-5110ff8e98b5.png)

「.IsEmpth」変数が空かどうかをブール値を返します。
![2021-02-14-16-36-55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/27c84c04-b874-a30e-2ba4-8603d9197da3.png)

「.ToUpper」英小文字を大文字に変換したテキスト値を返します。
![2021-02-14-16-39-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/faca1998-a2a1-fa0e-b58b-186c12051897.png)

「.Lower」英大文字を小文字にした変換したテキスト値を返します。
![2021-02-14-16-40-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/87739e60-ce24-bce4-60fd-993afc994993.png)

「.Trimmed」もとのテキスト値の前後に空白がある場合削除したテキスト値を返します。
![2021-02-14-16-43-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/51d79552-0258-4d41-c420-767ff36158ed.png)

![2021-02-14-16-43-57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/b42ecdbb-2452-c2ec-16fe-8284ad9875ee.png)


## テキスト値の代入

### 半角、マルチバイト文字の代入  

![2021-02-11-23-32-24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/697f5700-9f09-a2d9-e372-22ab742d61e5.png)

![2021-02-11-23-34-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/e40b8c0a-2262-a9bf-ced1-5a98330f2a87.png)

![2021-02-11-23-37-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/b748ab58-7153-68cb-a1d6-135448a6a6fa.png)


### テキストを%で囲うと、変数名として扱われます

![2021-02-11-23-40-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/bbe3c2b6-63f7-1083-ed36-37e47ed700dd.png)


### %で囲う必要がある場合はシングルクォーテションで囲うとテキスト値になります

![2021-02-11-23-41-58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/8b70c771-b5c4-86c3-29fb-8b3720360060.png)


### テキスト値の連結 

#### テキスト型変数を連結 

![2021-02-11-23-45-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/cbc1fc17-fc30-96f4-acaf-a18f5a1cebc0.png)

![2021-02-11-23-46-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/4a3f5855-77ec-493c-bc10-1dc0efe44b2c.png)


#### テキスト型変数の間にスペースを置いて連結

![2021-02-11-23-59-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/ecd1a02b-f7f1-63a3-3afb-7c79f5e33f2f.png)

#### 連結の間に空白文字を%' '%を使用
![2021-02-11-23-47-52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/01984d9e-6adc-4aa2-21d5-699f1f15f39b.png)


#### 外側のみ%で囲みプラス記号を使用して連結  

![2021-02-11-23-51-40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/c4131af7-cd4b-d4ad-a214-13a933327330.png)

![2021-02-11-23-52-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/12135936-0640-4823-d984-98e958f356ba.png)

いずれも同じ結果が得られます。

#### テキスト値変数と数値変数の混在
text1はテキスト値mod1,mod2は数値が代入されている。
![2021-02-12-00-21-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/fd6b6bc4-3066-0f2b-22fa-969473aa08b6.png)
テキスト値は文字として表示され数値は計算される。
![2021-02-12-00-23-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/af3e11b6-4922-4590-e2c9-0580159a3523.png)

### 空白文字  

#### %' '%半角スペース  

![2021-02-12-00-33-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/331c3b79-375a-9552-474a-bb362795bdd6.png)


#### %'　'%全角スペース  

![2021-02-12-00-34-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/9297add5-8b4f-b6b8-54ca-4a126dafe608.png)


#### %''%スペースなし　空判定に使うことができる「nullと同様の役割」

![2021-02-12-00-36-37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/8dafbe4a-888c-1b0c-3bd8-a6d8adb6ede6.png)

text6~text8はいずれも見えませんがテキスト値の扱いになっています。
![2021-02-12-00-41-44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/6c3969da-b329-9fbe-ae5d-a82f84aae280.png)


### テキスト値のスライス  

次のようにテキスト値を設定します。
![2021-02-12-23-53-55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/70baa509-5d35-8065-b14f-341a9a432d52.png)


テキスト値をスライスで指定する番号は0ベースとなります。

| Text   | A | B | C | D | E | F | G | H | I | J  |
|--------|---|---|---|---|---|---|---|---|---|----|
| Lengrh | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Index     | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9  |

#### テキスト値の1文字指定

Cを指定してみます。
![2021-02-14-16-57-33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/7bf990f5-12d4-e1ce-bdd7-cd04e51b6ae7.png)

![2021-02-14-16-58-26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/bcc59efe-4559-f8c3-3246-7f08aac8e39f.png)

#### テキスト値の範囲指定

テキスト値をスライスで範囲指定する場合は[start:stop]を宛先内に表記
Index No4以後のテキストを指定

![2021-02-12-23-55-40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/6d37e873-7113-4fa8-0860-ea8f50240395.png)


![2021-02-12-23-56-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/7500121a-d86a-dea4-55fb-2c19ee849820.png)
Index No4より前のテキストを指定

![2021-02-13-00-00-58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/c097b3ee-9125-b020-7dbe-c26f74f2327e.png)

![2021-02-13-00-01-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/e7ea39ea-9a46-792f-a865-e9cd71cf1dba.png)
Index No2~7のテキストを指定

![2021-02-13-00-01-43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/c6b94678-0038-93bc-58cd-63385621a049.png)

![2021-02-13-00-02-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/7dc4caba-f463-48e1-467e-a183a52d435c.png)

値の入っている枠の左棒を数えるとイメージしやすいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/680039/1f66e35f-3fe9-45a5-f1d2-15ac81c1b5f4.png)

## コード

```
SET NewVar TO $'''As400えーえす'''
SET Len TO NewVar.Length
SET IsEmpty TO NewVar.IsEmpty
SET Upper TO NewVar.ToUpper
SET Lower TO NewVar.ToLower
SET NewVar2 TO $'''                                    As400                                       '''
SET Trim TO NewVar2.Trimmed
```
```
/# #####################
テキスト値の結合
######################/
SET mod1 TO 2
SET mod2 TO 7
SET text1 TO $'''%'Hello'%'''
SET text2 TO $'''世界☺'''
SET text3 TO $'''%text1% %text2%'''
SET text4 TO text1 + ' ' + text2
SET text5 TO text1 + mod1 * mod2
/# #####################
空白文字
######################/
SET text6 TO $'''%' '%'''
SET text7 TO $'''%'　'%'''
SET text8 TO $'''%''%'''
/# #####################
テキスト値のスライス
######################/
SET text9 TO $'''ABCDEFGHIJ'''
SET SliceText TO text9[2]
SET text10 TO text9[4:]
SET text11 TO text9[:4]
SET text12 TO text9[2:7]
```


## 今回のまとめ  
まだまだ続きます。
プロパティの再利用とスライスは便利です。

## 参考
[Robin - RPA language](https://robin-language.org/)
[Power Automate Desktop の変数の処理 - Learn - Microsoft Docs](https://docs.microsoft.com/ja-jp/learn/modules/pad-variables/)