Power Automate Desktop で SharePoint Onlineリストのデータをダイレクトに取得や操作する方法

# はじめに

Power Automate Desktop から Sharepoint Online のリストに対して、直接アイテムの取得、追加、更新、削除する方法を記載します。

# 注意

本手順では Microsoft.ACE.OLEDB.12.0 を利用します。
「Microsoft.ACE.OLEDB.12.0プロバイダーはローカルコンピュータに登録されていません」的なメッセージが表示された場合は、下記よりインストールしてください。
https://www.microsoft.com/ja-jp/download/details.aspx?id=13255

Accessのランタイムをインストールする形でも可能です。
[Microsoft 365 Access Runtime をダウンロードしてインストールする](https://support.microsoft.com/ja-jp/office/microsoft-365-access-runtime-%e3%82%92%e3%83%80%e3%82%a6%e3%83%b3%e3%83%ad%e3%83%bc%e3%83%89%e3%81%97%e3%81%a6%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b-185c5a32-8ba9-491e-ac76-91cbe3ea09c9?ui=ja-JP&rs=ja-JP&ad=JP)

Microsoft.ACE.OLEDB.12.0 のSPOへの接続文字列については下記を参考にさせていただきました。本当にありがたいです！
https://www.connectionstrings.com/ace-oledb-12-0/#sharepoint

# 接続設定
PADにて、「SQL 接続を開く」 を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/2e735fba-d4f8-6298-a5bf-fa01a56832ed.png)

開いたウィンドウの接続文字列に、下記を入力します。

```
Provider=Microsoft.ACE.OLEDB.12.0;WSS;IMEX=0;RetrieveIds=Yes; DATABASE=[SPOサイトURL];LIST=[リストID];
```
※[SPOサイトURL] と [リストID] 部分は以下の方法で取得してください。

#### [SPOサイトURL] の取得
対象のSPOリストが含まれるサイトのURLを入力します。「ホーム」を選択した時のURLでOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/e95c2dc2-27c5-4b34-def0-5d7b0c45a332.png)

#### [リストID] の取得
対象のリストを選択した状態で、右上の歯車マークより、リストの設定を選び
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/18ab5e9a-9294-a533-aafd-14fa126acf16.png)

リストの設定画面のURLよりリストIDを取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/cb7a9897-68ac-2889-32b1-fac98a184a0c.png)


URLの"LIST="から続く文字列のうち、先頭の"%7B"と、末尾の"%7D"を除いた部分が、[リストID]になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/b4cecdd8-4005-e2a3-ae70-5eb1a316fa95.png)

今回の例ですと、以下のようになります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/511d9083-eb24-e894-8d4c-6fa24df91262.png)


# データ操作

PAD から SPO リストに対してはSQLを利用してデータ操作します。
SQLのリファレンスはWebにあふれていますので、ご存じない方は調べてみてください。

今回は基本的な取得、追加、更新、削除方法を記載します。

まず、「SQL ステートメントの実行」を選びます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/1d8bcd06-84a4-6838-8262-7ef4cd8e0a81.png)

開いたウィンドウの、「SQL ステートメント」欄に、SQLを記載していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/dd2bcb7f-056f-e8d1-eb2a-a77bd9dc69d0.png)


### データの取得

SELECT文を使います。
列名はSPO リストのカラム名をしてします。
テーブル名は[]（大かっこ）で囲んで、リスト名を指定してもいいですが、
###### "list"と記載してもOKです。超便利ですね！

例です

```
SELECT station,arrival,departure FROM [JR_Tokaido_Inbound_Line] WHERE station = '名古屋'
　または
SELECT station,arrival,departure FROM list WHERE station = '名古屋'
```

SQLステートメント内に変数を入れてもいいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/0658a77f-8e3d-165c-1ca1-576f7b77aa29.png)


データを取得できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/e6396ef0-4f21-6293-f595-430ca25f17f5.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/90fc8560-1f87-679c-e682-8dc4a6c39674.png)


### データの追加

INSERT文を使います。
テーブル名を"list"と記載してもいいのは取得と同じですし、SQL内に変数を入れてもいいです。

例です

```
INSERT INTO [JR_Tokaido_Inbound_Line] (station,arrival,departure ) VALUES ( '岐阜','9:00着','9:05発')
　または
INSERT INTO list (station,arrival,departure ) VALUES ( '岐阜','9:00着','9:05発')
```

リストにデータが追加できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/8fc0dd5b-5970-986c-ae93-3d174f654bcc.png)

### データの更新

UPDATE文を使います。
上記と同じですので、PADの変数を入れた例のみ記載。

```
UPDATE list SET station = '%NewVar%' WHERE station ='名古屋'
```

### データの削除

DELETE文を使います。

```
DELETE FROM list WHERE Station = '岐阜'
```

# 接続を閉じる

作成した接続は切断しましょう。
PADにて、「SQL 接続を閉じる」 を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/40acad59-9b3c-f446-0e89-09d7cc76e6ca.png)

# まとめ

PADからSPOリストを直接編集する方法が知りたく、色々調べてみた結果になります。
もっと簡単な方法をご存知でしたら、ご教示いたけると嬉しいです。