Power Automate の数式って難しい？だったら生成 AI に聞いちゃえ！


# はじめに

改めてですが、Power Automate の数式って難しくないですか？
数式をほとんど使わずにノーコード、GUI 操作のみで実装出来るようなフローを作る場合は、直感的で、初学者にも分かりやすいと思うのですが、数式を利用することになった途端かなり難易度が高くなると個人的に思っています。

例えば、以下のような式があります。
インプットの文字列を JSON 配列に変換しているのですが、括弧やシングルクォーテーションなどが沢山あります。


**数式**
```
json(concat('[', replace(triggerBody()?['text_1'], '}{', '},{'), ']'))
```

**インプット**
```
{"role": "user", "content": "日本で一番高い山は？"}, {"role": "assistant", "content": "日本で一番高い山は富士山です！🗻"},{"role": "user", "content": "二番目は？"}, {"role": "assistant", "content": "日本で二番目に高い山は北アルプスにある槍ヶ岳です！⛰️"},{"role": "user", "content": "三番目は？"}, {"role": "assistant", "content": "日本で三番目に高い山は、北アルプスにある立山（たてやま）です！🏔️"},
```

そして、数式上、一つでも括弧やシングルクォーテーションに不足があると以下のような感じになり、個人的に、どこに問題があるか探すのに苦労しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/d45552d3-7fea-a68e-047e-1e661815d795.png)

恐らく、同じように感じたことがある方も少なからずいると思います。

 今回は、そのようなケースにおいて、個人的に生成 AI にかなり助けてもらっている
ため、簡単に紹介をしたいと思います。

# 数式のエラー解消依頼

上記のような数式のエラーが出た際は、もちろん自力解決を目指してもいいですが、ChatGPT に聞いてみても良いかと思います。

例えば、以下のような感じで聞いてみると、エラーが解消されました。
単に数式を修正してというのではなく、クォーテーションや括弧に不足がある可能性があるため、その観点で確認して必要に応じて修正いただくように依頼するのがポイントです。単に修正を依頼すると、目的を勝手に読み取って意図しない観点で修正される可能性があるためです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/d9e01df5-53e1-c9c6-2a95-dc7545cf1b7b.png)

# 数式作成依頼

目的ベースで数式の作成を依頼します。何をやりたいかを明確に伝えること、インプットがある場合は、インプットの情報を伝えることが大切です。アウトプット形式も可能な限り明確な方がいいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/55777322-bc94-4e16-bb2b-7f977d8b5091.png)

なお、以下の記事で文字列を分割する方法についても、目的を伝え、数式を作成してもらいました。もちろん、しっかりテストをしています。

https://qiita.com/Takashi_Masumori/items/d05e8ae5a4056e2f81de

```
substring(triggerBody()['text'], variables('counter'), min(500, sub(length(triggerBody()['text']), variables('counter'))))
```

# 条件ロジック/Odata フィルター

複数のデータをフィルターして取得したい際、フィルターの式を書く必要があります。GUI ベースで住む場合もあるのですが、場合によっては、以下のようにして式 (Odata フィルター) を書く必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/eeba5281-264c-8f98-8158-5cfd330394ff.png)

正直、このフィルター、初学者泣かせだと思います。
SharePoint リストで列を日本語で作った場合は特に・・・

こちらについても、Odata フィルターの式が分からない、書いたけど実行したらエラーになるという方もいると思います。

この辺のロジックの書き方、エラーが出た際の対処方法についても ChatGPT に聞いてみてもいいかと思います。

私の場合、例えば、以下のようにして聞いています。

**日付でフィルターする例**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/2059f513-f80f-638c-ed00-05ed2ecf1431.png)

**エラー調査**

SharePoint リストをフィルターしようとしたところ、以下のようなエラーが発生しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/476b2516-d011-5497-7e9c-6825ee782cc1.png)

```
The expression "(OData__x7d0d__x671f_ gt 12/11/2023) and (OData__x7d0d__x671f_ le '2023-12-18T00:00:00.0000000') and (OData__x30b9__x30c6__x30fc__x30bf__x30 ne '完了') and (OData__x30ea__x30de__x30a4__x30f3__x30  ne 'false')" is not valid. Creating query failed.
clientRequestId: 44c93269-6689-4e38-84d5-20bcdd8d94f4
serviceRequestId: 44c93269-6689-4e38-84d5-20bcdd8d94f4
```

正直、ぱっとみ分かりづらいと思いますし、初学者の人は戸惑うと思います。そのため、以下のようにして ChatGPT に聞いてみました。日付の列についてもシングルクォーテーションで囲む必要があるみたいですね。Power Automate に慣れていないと気づけないと思うというか、慣れていても時々忘れます笑

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/dc1453c0-4cc9-8f5c-66b5-09540cd81db4.png)

# まとめ

Power Automate の数式について、生成 AI で解決する方法について、実例を交えつつ紹介しました。個人的にも良く使っていますし、Power Automate の数式で躓く、時間を要してしまう方の少しでも参考になれば幸いです。