1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Automateを使用して、日本語列名を含んだSharePoint Online リストへの登録を自動化する際のコツ

Last updated at Posted at 2022-03-18

背景

Power Automateを使用して、日本語列名を含んだSharePoint Online リストへの登録を自動化する際、

  • SharePoint上に表示されている日本語の項目名をそのまま使えない
  • 数値項目へ登録する際にnull値を考慮する必要がある

などの注意点があります。

日本語列名への対応策

Power Automate上では、日本語列名はSharePoint内部名のEntityPropertyName(「OData__xなんちゃら」)に置き換える必要があります。
例えば「日本語項目1」、「日本語項目2」列を追加した場合のEntityPropertyNameは、

列名 EntityPropertyName
タイトル Title
日本語項目1 OData__x65e5__x672c__x8a9e__x9805__x76
日本語項目2 OData__x65e5__x672c__x8a9e__x9805__x760

となります。
(デフォルトで作成される「タイトル」は、Titleのままになっています)
このEntityPropertyNameは、設定画面では表示・取得する方法がありませんので、以下のAPIで別途取得します。

https://TenantName.sharepoint.com/sites/SubSiteName/_api/web/lists/GetByTitle('リスト名')/fields")

わたしはExcelのPower QueryでAPIを呼んでシートとして保存し、いつもで呼び出せるようにしています。
項目数が多い場合、Power Automateのコードの中に、OData_なんちゃらが頻発し、読み取った項目と設定先の項目があべこべになることもありますので、シートで保存しておくと検算(といってもVlookUpで比較するだけですが)出来るので正確性が増します。

    let
	    ソース = OData.Feed("https://TenantName.sharepoint.com/sites/SubSiteName/_api/web/lists/GetByTitle('リスト名')/fields"),
	    削除された他の列 = Table.SelectColumns(ソース,{"EntityPropertyName", "InternalName", "StaticName", "Title", "TypeDisplayName", "TypeShortDescription"}),
	    並べ替えられた列 = Table.ReorderColumns(削除された他の列,{"Title", "EntityPropertyName", "InternalName", "StaticName", "TypeDisplayName", "TypeShortDescription"})
	in
	    並べ替えられた列
SubSiteName、リスト名 は正しい名称に置き換えてください。

ここで表示される日本語のTitleとEntityPropertyNameを照らし合わせてPower Automate上で設定する必要があります。

Nullへの対応(特に数値)

Forms(もしくはほかのトリガーソース)の項目で、SharePointリスト上の数値項目に入力するとき、int関数を使用するのですが、Nullだった場合は

    integer cannot be set to null or empty value

といったエラーが出ます。
そのため下記のようなNull判断が必要になります。
そのほかの関数も、おおむねNullだとエラーが出ることが多いので、この判断はほぼ必須。

    if(equals(triggerOutputs()?['body/OData_x002d__'], null), 0, int(triggerOutputs()?['body/OData_x002d__']))
OData_x002d__ は 正しいEntityPropertyNameに置き換えてください。

日付、時刻の取得時の処理

登録ではなくPower Automateでリストの値を取得する際のコツになります。
リストにデフォルトで含まれる「登録日時」「更新日時」も取得することが出来ますが、その際の時刻タイムゾーンはGMT Standard Time - UST となっています。これをこのまま扱うと、9時間分時間がずれることになります。
そのため、タイムゾーンの変更が必要になります。
いくつか方法がありますが、私自身はconvertFromUtc か、addHorus を使うことが多いです。

convertFromUtc(formatDateTime(triggerOutputs()?['body/Modified']),'Tokyo Standard Time')
addHours(formatDateTime(triggerOutputs()?['body/Modified']), 9)
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?