Power Automate フローで SharePoint アプリの列をクリアしたい
2022.11.04
Power Automate と SharePoint Online のアプリを組み合わせて利用すると「列の値を消去したい」シーンがしばしばあります。が、これが案外と一筋縄ではいかないんですよね。この投稿では、標準の「項目の更新」「ファイルのプロパティの更新」アクション、または SharePoint REST API 経由で、列の値をクリアする方法を紹介します。
項目の更新(ファイルのプロパティの更新) アクション
標準的な SharePoint コネクタである「項目の更新」または「ファイルのプロパティの更新」アクションで SharePoint Online アプリの列値をクリアするには、基本的には数式「null()」です。ただし「選択肢」列と「ユーザーまたはグループ」列に対してはこれが動作しません。
選択肢をクリアするには、式「String(”)」です。
ユーザーとグループ列は少し特殊で、「複数選択を許可」オプションがオンの場合には「null()」でクリア可能なのですが、無効の場合(複数選択ができる)、標準的なアクションではクリアする方法がありません。どうしても「HTTP要求を送信します」アクションでの対応が必要になります。
このアクションを使用してNULL値指定をする場合、以下の制限/制約があります。
・選択肢列/ユーザーまたはグループ列に対して【null()】を指定しても無効(値がクリアされない)
※ ユーザーとグループ列に関しては列の設定にて「複数選択を許可」をオンにすると【null()】で値がクリアされます。
選択肢列に対し値をクリアしたい場合は【String(”)】を指定します。
SharePoint に HTTP 要求を送信します アクション
このアクションで SharePoint REST api を経由すれば、どんなタイプの列でもクリアできます。
が、こちらも列種類により指定方法が絶妙に異なるので、注意が必要です。
- 一行テキスト:“列内部名”:”null()”
- 複数行テキスト:“列内部名”:”null()”
- 選択肢:“列内部名”:”String(”)”
- 日付と時刻:“列内部名”:null
- はい/いいえ:“列内部名”:null
- ユーザーまたはグループ(単一選択):“列内部名StringId”:”;”列内部名Id”:0
- ユーザーまたはグループ(複数選択):“列内部名Id”:{‘results’:[0]}
- ハイパーリンク:“列内部名”:{‘Description’:”null()”,’Url’:”null()”}
もちろん「列内部名」は適宜置換してください。
少し補足すると、「null()」は式として挿入しますが、「null」は単なるテキストです。
ユーザーまたはグループ列(単一選択)は、表示名とプリンシパルIDをクリアしています。表示名は列内部名の後ろに「StringId」を、プリンシパルIDは「Id」を付加して指定します。
ユーザーまたはグループ列(複数選択)は、アレイなので配列形式で指定します。
ハイパーリンクについては、「代替テキスト」と「URL」の二か所にをクリアします。
ほんっとに分かりにくい…
やりたいことは「値のクリア」というシンプルな行為なのですが、列タイプによって書き分けが必要なんですよね。初見だとかなりハマリ度高いです(苦笑)。私自身も時々忘れて「あれ?」となるので、メモ代わりに投稿してみました。