Sharepointをハブにちょっとした自動処理をPower Automateで組む機会が多くなりました。
職場事情で、今まで使っていたフローを異なるサイトへ移動しました。今までは “ピュア” Sharepoint配下のデータで自動処理していましたが、今回はTeamsチーム・チャンネル配下にしました。
同じ処理を移すだけなのに、時間がおかしい…
Power AutomateってUTCで考えておけばよかったんじゃなかったっけ?出てくる時間が全然違う…(困惑
結果的には、Sharepoint「地域の設定」⇒タイムゾーンの設定でした。
Sharepointのタイムゾーン
職場ではテナント管理をしているわけではなく、払い出されているサイトの一部を運用しています。
テナント側のタイムゾーン設定が配下サイトにも継承されているので、私は時間に関する設定をした記憶が全くなく、今回フローを別サイトに移す段階では完全に思考から抜け落ちていました。
サイトで適切なタイムゾーンが設定されていれば、そこから作ったサブサイトにも同じタイムゾーンが継承されます。よって、一度設定してしまうとよほどのことがなければ、タイムゾーンの設定に出会うことはありません。
TeamsではSharepointがデータバックボーンとして使われている
わりと気づいていない人が多いのですが、チームを作ってメンバーを加えるとそのメンバーだけのサイトが出来上がります。
そうよ、Teamsのデータバックボーンの一部にSharepointが使われているわ。気づいていない人は置いていきましょう。
チャネルを作ると同じ名称のフォルダが出来るし、画像や動画、資料などをタイムラインで共有すればそのデータはデータバックボーンである、Sharepointのドキュメントライブラリ上に格納されます。
▲ Teamsチームに紐づけたSharepointサイトは各チャネル右端の「・・・」からオプションメニュー「Sharepointで開く」より遷移できます。
今回、このサイトに作ったリストでフロー処理を組もうとしていましたが、いつも使っているサイトとはタイムゾーン設定が異なっていました。ほかの企業は知らないけど、Teamsサイトがよく使っているサイトとは別の階層になっていたのでタイムゾーン設定が継承されていなかったらしい。
Sharepoint / Power Automateの時間
この記事投稿時点でのアプリそれぞれの既定時間は次の通りです。
ツール | 既定のタイムゾーン | 日本との時差 | 変更方法 |
---|---|---|---|
Sharepoint | 太平洋標準時(PST) | 17時間 | サイトの設定から変更する |
Power Automate | 協定世界時(UTC) | 9時間 | アクションや関数で変更する |
両方とも日本時間だと勘違いすると、もう頭がグチャグチャになります(苦笑
Sharepointでタイムゾーン設定は「地域の設定」から行う
▲ 設定自体はなんてことなく、サイト右上の歯車よりサイトの設定→「地域の設定」を開きます(一定の権限が必要です)。
▲ Sharepoint既定では、太平洋標準時間(PST)になっています。
▲ 日本時間に変更します。この地名ってあいうえお順なんですかね?
Power Automateで取得した時間はアクションや関数で変換する
Sharepoint側で日本時間に変更したとしても、PowerAutomateでSharepointリソースから取得した時間を日本時間として使うにはタイムゾーンの変更をする必要があります。
以下は、そのまま使った例です。
▲ おしらせの1アイテムを選んでその登録日時をTeamsに流すだけのフローです(関数formatDateTimeは、読みやすい形式にしているだけです)。
▲ 上記は結果、9時間差があります。
アクションによるタイムゾーン変更
▲ 元のフローでTeamsメッセージを流す前に「タイムゾーンの変換」アクションでUTCから日本時間へと変更します。
▲ 同じアイテムでテストしなすとタイムゾーンが変換されたのがわかります。
Sharepointのタイムゾーンを既定のままで日本時間と勘違いすると、よくわからなくなるので両方の時間を意識する必要があります。
関数によるタイムゾーン変更
アクションを使わないで関数でタイムゾーンを変更できます。
UTCからタイムゾーンを変換するには、convertTimeZone関数やconvertFromUTC関数を使います。
今回は、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タイムゾーンに関する記事を投稿しました。もう忘れないようにしないと。