Share

Power Automate フローで SharePoint アプリの列をクリアしたい

  • 2022年11月4日

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」の二か所にをクリアします。

ほんっとに分かりにくい…

やりたいことは「値のクリア」というシンプルな行為なのですが、列タイプによって書き分けが必要なんですよね。初見だとかなりハマリ度高いです(苦笑)。私自身も時々忘れて「あれ?」となるので、メモ代わりに投稿してみました。