rex0220 計算式プラグイン一括計算のスケジュール実行

Power Automate Desktop で kintone アプリの計算式プラグインの一括計算処理をスケジュール実行してみました。
基本的には、kintone アプリ画面のボタンをクリックするだけなので、いろいろ応用できそうです。

# 概要

「計算式プラグインの一括計算処理を定期的に実行できないか」というご相談がありましたので、無料で使えるPower Automate Desktop で試してみました。
Power Automate Desktop、Power Shell、タスクスケジューラを組み合わせると、なんとかkintone アプリのボタンをスケジュール実行できました。
PC上のスケジュール実行なので、当然ながら PC が立ち上がっていないと動作しません。

なお、kintone のDOM操作・Power Automate Desktop の UI操作を行っているため、kintone や Power Automate Desktop の仕様変更で動作しなくなるリスクがあります。

# 環境

- kintone
- Windows 11 Pro
- Power Automate Desktop
- Power Shell
- タスクスケジューラ

# kintone アプリの準備

## kintone 計算式プラグイン設定

kintone アプリに計算式プラグインの計算式設定と一括計算ボタン設定を行います。

![2022-07-23_19h02_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/04b894f9-40fb-9075-b65c-fe03cba91719.png)

一括計算ボタン設定
![2022-07-23_19h03_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/8bd3f9b5-a0b5-86a8-973f-82bd60ed4063.png)

## 一覧画面の一括計算ボタンの処理

一括計算ボタンをクリックすると、ダイアログが表示され、更新ボタンクリックで一括計算が実行されます。
RPA でも、同じような手順で一括計算処理を行います。

![2022-07-23_19h04_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/69c0340d-713c-6669-10a0-2bd2bbb57798.png)

# Power Automate Desktop

Power Automate Desktop で、一括計算を行うフローを作成します。

![2022-07-23_19h23_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/93fbb1cb-8261-58e7-0d1a-c030a916fd4f.png)

## 一括計算を行うフロー

- ブラウザーを起動（今回は Edgeを利用、Chrome も可）
- kintone ログイン処理（kintone IDが画面にある場合）
    - kintone ID を入力
    - kintone password を入力
    - 「ログイン」ボタンをクリック
    - wait 1 秒

- 「一括計算」ボタンクリック
- 一括計算ダイアログの「更新」ボタンクリック
- Web ブラウザーを閉じる

![2022-07-23_19h30_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/2be109fe-4587-bc4b-9068-39f6e5c38161.png)

## Web レコーダーで、kintone ログイン～一括計算ボタンクリックまで記録

![2022-07-23_19h40_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/a4541bb5-01f5-ecf1-81c4-70a278018d28.png)

## Web レコーダーで、ブラウザーにテキスト入力する例

ログイン名をクリックして、入力します。
パスワードを入力すると、何故かうまく入力記録が取れません。

![2022-07-23_19h59_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/d33b04b7-f840-1a3f-6f69-bdf878a0ddc5.png)

## Web レコーダーで作成されたフローの修正

パスワードの入力記録が無いなど、そのままでは不完全なので、個別に修正

ログイン画面のチェックなどを追加する例
![2022-07-23_20h11_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/31d9af9f-0e72-ee65-7565-301ab8236944.png)

## 作成したフローの実行テスト

フローが問題なく実行できるまで、テスト・修正の繰り返し

![2022-07-23_20h15_42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/bb6d780c-3863-0e16-723a-5c39860caf2a.png)

# PowerShell

power automate desktop powershell で、ググったら下記ページがヒットしました。
Power Automate Desktopのフローを PowerShell で実行してくれる優れもの。
Power Automate Desktop を実行して、フローの UI を探して、実行ボタンをクリックしているようです。

[[Power Automate Desktop]名前を指定してフローを実行するPowerShellスクリプト](https://www.ka-net.org/blog/?p=13647)

## 名前を指定してフローを実行するPowerShellスクリプト

ページからスクリプトをダウンロードして、適当なフォルダーに置きます。
スクリプトファイルのプロパティを開いて、セキュリティの「許可する」をチェック。

![2022-07-23_21h37_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/761531b1-011a-5351-5f0a-c867a528afd4.png)

## スクリプト実行

PowerShell を開いて、StartPADFlow.ps1 と"一括計算"を指定して実行します。
Power Automate Desktop がうまく動作したらOKです。

```StartPADFlow.ps1
PowerShell -NoProfile -ExecutionPolicy Unrestricted "C:\xxxx\StartPADFlow.ps1" "一括計算"
```

# タスクスケジューラ

タスクスケジューラに、「名前を指定してフローを実行するPowerShellスクリプト」を登録します。
今回は、kintone タスクのファルダーを作成し、そこに「一括計算」のタスクを作成しました。

![2022-07-23_21h55_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/0df46a09-85e6-605a-bbab-9b65a1dcf8dd.png)

## PowerShell の登録

操作にPowerShell を登録します。

プログラム：PowerShell
引数：-NoProfile -ExecutionPolicy Unrestricted "C:\xxxx\StartPADFlow.ps1" "一括計算"

![2022-07-23_21h59_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/c4bb7301-e8b7-a1f2-ca8c-72470a09de09.png)

## スケジュール

トリガーに、スケジュールを登録します。
毎日１時間ごとにスクリプトを実行する例です。

![2022-07-23_22h05_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100572/4d153796-7601-6037-1a1d-d9d1571530e3.png)