忘れたころにSharepointタイムゾーンにハマる。なんだか時間がおかしいぞ…

忘れたころにSharepointタイムゾーンにハマる。なんだか時間がおかしいぞ... SharePoint

Sharepointをハブにちょっとした自動処理をPower Automateで組む機会が多くなりました。

職場事情で、今まで使っていたフローを異なるサイトへ移動しました。今までは “ピュア” Sharepoint配下のデータで自動処理していましたが、今回はTeamsチーム・チャンネル配下にしました。

アレコレメモ
アレコレメモ

同じ処理を移すだけなのに、時間がおかしい…

Power AutomateってUTCで考えておけばよかったんじゃなかったっけ?出てくる時間が全然違う…(困惑

結果的には、Sharepoint「地域の設定」⇒タイムゾーンの設定でした。

スポンサーリンク

Sharepointのタイムゾーン

職場ではテナント管理をしているわけではなく、払い出されているサイトの一部を運用しています。

タイムゾーンのイメージ図

テナント側のタイムゾーン設定が配下サイトにも継承されているので、私は時間に関する設定をした記憶が全くなく、今回フローを別サイトに移す段階では完全に思考から抜け落ちていました。

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(Sharepointではタイムゾーン設定は配下サイトに継承される)

サイトで適切なタイムゾーンが設定されていれば、そこから作ったサブサイトにも同じタイムゾーンが継承されます。よって、一度設定してしまうとよほどのことがなければ、タイムゾーンの設定に出会うことはありません。

TeamsではSharepointがデータバックボーンとして使われている

わりと気づいていない人が多いのですが、チームを作ってメンバーを加えるとそのメンバーだけのサイトが出来上がります。

アンナ
アンナ

そうよ、Teamsのデータバックボーンの一部にSharepointが使われているわ。気づいていない人は置いていきましょう。

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(Teamsのデータバックボーンの一部にSharepointが使われている)

チャネルを作ると同じ名称のフォルダが出来るし、画像や動画、資料などをタイムラインで共有すればそのデータはデータバックボーンである、Sharepointのドキュメントライブラリ上に格納されます。

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(TeamsからSharepointサイトを開く)

▲ Teamsチームに紐づけたSharepointサイトは各チャネル右端の「・・・」からオプションメニュー「Sharepointで開く」より遷移できます。

今回、このサイトに作ったリストでフロー処理を組もうとしていましたが、いつも使っているサイトとはタイムゾーン設定が異なっていました。ほかの企業は知らないけど、Teamsサイトがよく使っているサイトとは別の階層になっていたのでタイムゾーン設定が継承されていなかったらしい。

スポンサーリンク

Sharepoint / Power Automateの時間

この記事投稿時点でのアプリそれぞれの既定時間は次の通りです。

ツール 既定のタイムゾーン 日本との時差 変更方法
Sharepoint 太平洋標準時(PST) 17時間 サイトの設定から変更する
Power Automate 協定世界時(UTC) 9時間 アクションや関数で変更する
アレコレメモ
アレコレメモ

両方とも日本時間だと勘違いすると、もう頭がグチャグチャになります(苦笑

Sharepointでタイムゾーン設定は「地域の設定」から行う

この記事の例は、プライベートで契約している「Business Standard」プランです。

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(Sharepointでのタイムゾーン変更方法)
Sharepointでのタイムゾーン変更方法

▲ 設定自体はなんてことなく、サイト右上の歯車よりサイトの設定→「地域の設定」を開きます(一定の権限が必要です)。

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(既定時間は太平洋標準時間)

▲ Sharepoint既定では、太平洋標準時間(PST)になっています。

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(日本時間へと変更する)

▲ 日本時間に変更します。この地名ってあいうえお順なんですかね?

Power Automateで取得した時間はアクションや関数で変換する

Sharepoint側で日本時間に変更したとしても、PowerAutomateでSharepointリソースから取得した時間を日本時間として使うにはタイムゾーンの変更をする必要があります。

以下は、そのまま使った例です。

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(Sharepointで取得した時間をPower Automateで利用する例)
Sharepointで取得した時間をPower Automateで利用する例

▲ おしらせの1アイテムを選んでその登録日時をTeamsに流すだけのフローです(関数formatDateTimeは、読みやすい形式にしているだけです)。

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(タイムゾーンを変更しないとUTC時間で出力される)
タイムゾーンを変更しないとUTC時間で出力される

▲ 上記は結果、9時間差があります。

アクションによるタイムゾーン変更

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(アクションによるタイムゾーン変更)
アクションによるタイムゾーン変更

▲ 元のフローでTeamsメッセージを流す前に「タイムゾーンの変換」アクションでUTCから日本時間へと変更します。

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(UTCから日本時間へと修正された)
UTCから日本時間へと修正された

▲ 同じアイテムでテストしなすとタイムゾーンが変換されたのがわかります。

Sharepointのタイムゾーンを既定のままで日本時間と勘違いすると、よくわからなくなるので両方の時間を意識する必要があります。

関数によるタイムゾーン変更

アクションを使わないで関数でタイムゾーンを変更できます。

UTCからタイムゾーンを変換するには、convertTimeZone関数やconvertFromUTC関数を使います。

Sharepointタイムゾーン・地域の設定、Power Automateでの時間利用(関数によるタイムゾーン変更方法)
関数によるタイムゾーン変更方法

今回は、convertTImeZone関数を使いました。

convertTimeZone('<timestamp>', '<sourceTimeZone>', '<destinationTimeZone>', '<format>'?)
パラメーター 必須 説明
<timestamp> Yes String 別のアクションで取得した時間などを入れる
<sourceTimeZone> Yes String 変換前のタイムゾーンを指定する
<destinationTimeZone> Yes String 変換後のタイムゾーンを指定する
<format> No String 書式設定文字列を指定する

以下は、UTCから日本時間への変更例。

convertTimeZone(outputs('項目の取得')?['body/Created'],'UTC','Tokyo Standard Time', 'yyyy/MM/dd HH:mm tt')

まとめ

今回、自分の意識下に記憶を刷り込むべくSharepointタイムゾーンに関する記事を投稿しました。もう忘れないようにしないと。