2022年10月15日土曜日

【PowerAutomate】今月月初の日付を取得

event_note10月 15, 2022

 PowerAutomateの式を検索すると、日付、時間の加算関数はすぐに見つかった のですが、月初を指定する方法がわからず、やり方に迷ったため紹介したいと思います。

方法

設定

「タイム ゾーンの変換」というアクションを以下のように設定して使います。

パラメータ​設定値​
基準時間utcNow() 
書式設定文字列yyyy-MM-01    ※一例です。日付の部分を1にしてください
変換元のタイムゾーン(UTC)協定世界時
変換先のタイムゾーン自分のタイムゾーン(日本なら UTC+09:00)大阪、札幌、東京)

基準時間
式のutcNow()を設定します。


書式設定文字列
上記のパラメータに記載した内容は一例です。
月初の日付とするために日付の部分は1にしてください。

変換元のタイムゾーン
変換元は日本の日付ではなく、(UTC)協定世界時間になっていますので、これを選択してます。


変換先のタイムゾーン
タイムゾーンを指定します。
使用したい環境にあうタイムゾーンを設定します。


例えば、日本は協定世界時間より9時間前の時刻なので、変換後のタイムゾーンを指定して環境にあった時刻に調整してやる必要があります。

日本は「UTC+09:00 大阪、札幌、東京」ですね。

タイムゾーンの差と測定した時刻によっては、変換元と変換先のタイムゾーンで日付が変わってくるため環境にあったタイムゾーンを設定しましょう。

実行結果

出力欄を見ると、2022-10-01と月初の日付で出力されている事がわかります。

2022年10月13日木曜日

【Outlook365】メールを別フォルダへ振り分けるルールを作成する

event_note10月 13, 2022

特定のメールを指定した受信フォルダに振り分けたいと思ったのですが、どこから設定してよいか迷ったため、操作方法を記載します。

設定方法

左上の「ホーム」 → 右上の「…」 → 「ルール」→「ルールの管理」


ルール名、条件、アクションを設定し、保存ボタンを押す。


これで完了です。
新しいルールが追加されました。




【PowerAutomate】返信メールの下書きを作成する(送信はしない)

event_note10月 13, 2022
受信したメールに対して、返信メールを送らないで、下書きメールを自動作成したい時ってないでしょうか?

例えば、PowerAutomateでいずれは受信メールに対して自動返信をするつもりだが、いきなり自動返信はちょっと心配…。
下書きメールで内容が正しく作成されるか様子をみたい。

やっぱり、大切なメールは送信前に自分の目でチェックしたい!

そんなケースはあるかと思います。

しかし、PowerAutomateでは、下書きメールを作成するというアクションはありません。
代わりとなる方法について紹介いたします。

フロー概要

Outlook365を使ったフローを作成します。

届いたメールに対して、「HTTP要求を送信します」で返信メールの下書きを作成します。
メールは下書きフォルダに保存されます。




フロー詳細

今回の例では、受信フォルダのサブフォルダ「返信テスト」に届いたメールに振り分けられたメールに対して、「ありがとう!!」と自動で返信する内容です。

サブフォルダへの振り分けは、Outlookのルールであらかじめ設定をしておきます。

それでは、各アクションについて説明していきます。

新しいメールが届いた時(V3)

オプションでメールの絞り込みできますが、今回はフォルダの指定のみにします。
必要に応じで絞り込みを行ってください。


HTTP要求を送信します(プレビュー)

本文のところは、返信する内容をcommentの値に記載するだけです。簡単ですね。
返信メールの作成なので、宛先は受信メールの差出人のメールアドレスが自動で設定されます。

パラメータ​設定値​
URIhttps://graph.microsoft.com/v1.0/me/messages/<新しいメールが届いた時(V3)のメッセージID>/createReply
メソッドPOST
本文
 差出人のみに返信
{
"comment": "<返信するメールの本文>"
}
コンテンツの種類application/json

作成された下書きメールです。


補足

返信先(To)を変更する場合

もし、返信先を変えたい場合は、以下のようにtoRecipients内に送信先を設定します。
以下の例では「aaa@sample.com」、「bbb@sample.com」の二つが送信先になります。

本文 例1
 返信先を差出人以外に変更
{
"message":{
"toRecipients":[
{
"emailAddress": {
"address":"aaa@sample.com",
"name":"yamamoto ichiro"
}
},
{
"emailAddress":{
"address":"bbb@sample.com",
"name":"yamamoto tarou"
}
}
]
},
"comment": "ありがとうございます!!"
}


作成された下書きメールです


返信先(CC)を追加する場合

ccRecipientsを使うと、CCによる返送先を追加できます。
ちなみにccRecipients→bccRecipientsにかえると、BCCの宛先を追加できます。
本文 例2
 返信先(CC)を追加
{
"message":{
"ccRecipients":[
{
"emailAddress": {
"address":"ccc@sample.com",
"name":"yamamoto ichiro"
}
}
],
},
"comment": "ありがとうございます!!"
}


おわりに

基本となる送信者への返信は、意外にも簡単ですね。
他にも色々な設定を追加できます。気になる方はこちらのページをご確認ください。

2022年10月10日月曜日

Sharepointのファイル名を変更する【PowerAutomate】

event_note10月 10, 2022

PowerAutomateでSharepointのファイル名を変更したいということは結構あるのではないかと思います。

しかし、ファイル名変更専用のアクションは用意されていません。
少しとっつきにくいですが、「SharePointにHTTP要求を送信」のアクションを使用してファイル名を変更をしていきます。

フロー概要

ファイル名変更に必要な、ItemId、フォルダーのODataの種類を取得してから、
ファイル名変更を実行します。 

JSONの解析は必ず必要なものではありませんが、このプロセスを入れておいた方が、前のプロセスの出力結果を設定しやすくなります。



フロー詳細

今回の例では、ドキュメントライブラリ「DocLIb_test」のサブフォルダ内にある、「Book.xlsx」を「aaabbbdde1.xlsx」に変更します。

パスによるファイルメタデータの取得




パラメータ設定値​
​サイトのアドレス​プルダウンから選択するか
ドキュメントライブラリのURLを入力
ファイル パス​/<ドキュメントライブラリ名から始まるファイルパス>
例)/DocLIb_test/General/test/Book.xlsx


SharePointにHTTP要求を送信(ODataの種類取得用)

フォルダーのODataの種類を取得します。
URI欄の<Itemid>はひとつ前の「パスによるファイルメタデータの取得」の出力結果のItemidを設定します。

パラメータ​設定値​
​サイトのアドレス​プルダウンから選択するか
ドキュメントライブラリのURLを入力
方法GET
URI_api/web/lists/GetByTitle('<ドキュメントライブラリ名>')/items(<パスによるファイルメタデータの取得ItmeId>)

JSONの解析

このアクションの設定をするためには、「SharePointにHTTP要求を送信します」の出力結果が必要です。いったん、ここまで作成したフローを一度テスト実行してみます。

実行が終わったら、「SharepointにHTTP要求を送信します」をクリックして結果を確認します。


出力結果をコピーします
 

ここまで終わったら、フローの編集画面に移ります。
JSONの解析のアクションを追加して、


パラメータ​ 設定値​
​コンテンツ<SharepointにHTTP要求を送信します の 本文(body)>
スキーマ(​※サンプルから生成ボタンを押して設定。下記スキーマの設定を参照)

スキーマの設定

サンプルから生成ボタンを押して、「SharepointにHTTP要求を送信します」の出力結果でコピーした内容を貼り付けます。


貼りつけるとこのようになるので、完了ボタンを押してください。

スキーマ欄に値が入っていればOKです。

次に進みましょう。

SharePokintにHTTP要求を送信(ファイル名変更用)

いよいよファイル名変更のプロセスです。

以下の設定画面では、URIで指定したファイルの名前を「aaabbbdde1.xlsx」という名前に変更しています。

ボディの設定欄に変更後のファイル名が記載してあります。


各欄の設定値は以下の通りです。

パラメータ​設定値​
​サイトのアドレス​プルダウンから選択するか
ドキュメントライブラリのURLを入力
方法GET
URI_api/web/lists/GetByTitle('<ドキュメントライブラリ名>')/items(<パスによるファイル メタデータの取得ItmeId>)

ヘッダー
パラメータ設定値​
Content-Typeapplication/json;odata=verbose
If-Match*
X-HTTP-MethodMERGE

ボディ
パラメータ設定値
ボディ{
'__metadata':{
'type': '<
JSON の解析Type>'
},
'FileLeafRef':'<変更後のファイル名>'
}

以上で、フローとその設定は完了です。
後は、フローを実行してみてください。

ファイル名が変更されます。

補足

このフローでは、変更後名前のファイルが既に存在する場合は、処理が失敗してしまいます。
必要に応じて、変更後の名前のファイルが既にないか事前にチェックする等してファイル名が一意になるようにしてください。

終わりに

ファイル名変更の自動化は結構必要となることが多いのではないでしょうか?

例えば、任意のファイル名で提出されたエクセルファイルを受理した日付、種類などを付けた定型のファイル名に変更するな、使える技なので、是非お試しください。

2022年10月7日金曜日

フローの名前を変更する【PowerAutomate】

event_note10月 07, 2022

PowerAutomateのフローの名前の変更方法がわかりにくく、迷ったので方法を紹介します。


変更方法

変更したい名前をクリック

編集ボタンをクリック

新しい名前を入力、右下の保存をクリック

変更されました



終わりに

まずは、適当な名前でフロー作ろう!と思うとtestとつけちゃうことがおおいんですよね。
で、なんのフローかわからなくなってしまうことがよくあります。

時々、いらないフロー消したり、整理整頓します。

ロックモードのため、ファイルが移動できない問題が解決【PowerAutomate&Sharepoint】

event_note10月 07, 2022

こんにちは。

PowerAutomateを使って、普段の手作業を自動化できないかな?と試みています。

主に、ExcelOnlineとSharepointのトリガーやアクションを使うことが多いのですが、Excelファイルを参照すると、ロックされてしまいファイルの移動ができなくなってしまうという事がおこってしまいました。

この現象の解決方法について説明したいと思います。

現象)ファイルがロックされて別フォルダへ移動できない!

Excelのテーブルを参照し、その後にそのExcelファイルを別フォルダへ移動しようとすると、Excelを参照した時にロックされているためファイルが移動できません。

例えば、以下のような処理を行った時に発生します。

・「表内に存在する行を一覧表示」のアクションを使って

 Documents/General/test/Book11.xlsx のテーブルデータを読み込み

・「ファイルの移動」で別フォルダDocuments/General/sumi/ へ移動


実行した結果、

「ファイル '(移動しようとしたファイルパス)' はロック モードのため、移動できません。」


というエラーが発生してまいます。

原因は、移動しようとしたファイルが「表内に存在する行を一覧表示」で使いっぱなしとみなされてロックされているためだと思われます。



解決策)ファイルのチェックアウトを使う

時間を置けば、ロックが解除されるのですが24時間かかることもあるそうです。そんなにまっていられませんね…。

そこで、以下のようにチェックアウト関連のアクションを入れたところ、ロックが発生せずにファイルを移動することができましたよ!

「ファイルのチェックアウト」←追加!

・「表内に存在する行を一覧表示」のアクションを使ってテーブルデータを読み込み

「ファイルのチェックアウトの破棄」←追加!

・「ファイルの移動」で別フォルダへ移動


実行結果は以下の通りです。

補足 ファイルのチェックアウトについて

チェックアウトをすると、他の人がファイルを編集しないようにできますよ。この状態でファイルを開くのは読み取り専用でファイルを開くような感じですね。

チェックアウトの破棄は、チェックアウトを取り取り消すことで他の人がファイルを編集できるようになります。

終わりに

この方法にたどり着くまでに、Do Untilと待機を使ってロック解除するまで待ってみようかと試したりしましたが、時間がかかりすぎてうまくいきませんでした。

せっかくファイルを移動するフローを作ったのに、使えない…と思ていたので助かりました。

ファイルのチェックアウトは、できるだけフローのはじめで実行した方が確実に邪魔が入らずよいかもしれませんね。

2022年10月5日水曜日

変数を初期化する/配列変数に追加 で二次元配列を作る【PowerAutomate】

event_note10月 05, 2022

 前回まで「変数の初期化」、「配列変数に追加」のアクションを使ってみて、同じ形式でカンマ区切りのデータであればアレイ(配列)にできるということがわかりました。

ということは、アレイの中にアレイを入れて、二次元配列が作れそうです。

どういう時に使うかはさておき。試してみたいと思います。

二次配列の書き方

通常のアレイ(配列)は[]でくくった、カンマ区切りで表します。

[11,12,13]

配列は0番目からのスタートになりますので、

上記の配列は0番目が11、1番目が12、2番目が13となります。

二次配列は、配列を入れ子にします。

同じく21~23、31~33の配列を並べて、[]でくくります。
これで二次配列の完成です。

[[11,12,13] ,[21,22,23], [31,32,33]]


PowerAutomateでやってみよう

概要

以下は、先ほど説明した11から33までの数字を使った「アレイ二次」という二次配列を作り、その二次配列の値を参照する例です。


実行結果と解説

アレイに設定した配列が参照できるか確認してみます。
試しに以下のように参照してみましょう。

variables('アレイ二次')[0][0]

上記の指定だと、親配列の0番目、子配列の0番目なので、11が表示されるはずです。
[[11,12,13] ,[21,22,23], [31,32,33]]



ちゃんと11が表示されましたね!


おわりに

大量のデータを扱うにあたり、アレイは避けて通れないものです。
入れ子になっている多次元の配列はちょくちょくでてくるので、まずは簡単な数値の配列で確認することで、文字列やその他の配列の使い方について理解しやすくなるのではないでしょうか。

エクセルの表のデータをアレイ(配列)に読み込んで保存する2【PowerAutomate】

event_note10月 05, 2022

 

エクセルの表をアレイ(配列)に読込みこむ

このような表を担当リストという名のアレイ変数(配列)に読込みます。

概要

読み込んだエクセルのvalueを、変数の初期化の初期値に設定してやることで、1行ごとのデータに分けて配列に格納されます。

1,2,3 とか {XX},{XX},{XX} みたいなカンマ区切りのデータを初期値で設定するとカンマで区切って、アレイデータが出来上がりです。

全体の流れ

「表内に存在する行を一覧表示」でデータを読み込んだ後、「変数を初期化する」でアレイの初期値に設定します。




 

表内に存在する行を一覧表示


このアクションは指定したエクセルのテーブルにあるデータを条件に従って読み込みます。
読み込んだデータは以下のようになります。

次のステップで設定する value は以下のようなデータです。

{}で区切った単位が1行分のデータあり、{},{},{}という風に同じ形式のデータが3つ並んでいます。

カンマ区切りのデータなので、アレイに格納できる形式ですね。

変数を初期化する

前のステップで取得したvalueを値に設定します。


アレイに設定したデータを参照するには


式variablesを使って、データを参照します。

 variables('アレイ変数名')[取得したい行数-1]?['エクセルでの項目名']

 

 variables()    のなかは、アレイ変数名
    []        のなかは    配列の番号
    ?[]        のなかは    エクセルでの項目名(列の名前) です。

例えば、 

variables('担当リスト')[0]?['氏名']

と指定すると、エクセルでいうと以下の赤枠のデータを参照できます。

valuablesどこで書く?

こんな風に、式から入力します。


実行結果




2022年10月4日火曜日

エクセルの表のデータをアレイ(配列)に読み込んで保存する1【PowerAutomate】

event_note10月 04, 2022

エクセルの表をアレイ(配列)に読込みこむ

このような表を担当リストという名のアレイ変数(配列)に読込みます。

概要

読み込んだエクセルのvalueを、Apply to Eachを使って「配列変数へ追加」のアクションを使用すると1行ずつデータを配列に格納することができます。

全体イメージ


 

補足詳細

エクセルのvalueはこのように取得されます。

{}で区切った単位が1行分のデータです。
1行ごとに、配列変数の0番目、1番目、2番目に格納されます。

アレイ変数からのデータ参照方法

式variablesを使って、データを参照します。

 variables('アレイ変数名')[取得したい行数-1]?['エクセルでの項目名']

 

 variables()    のなかは、アレイ変数名
    []        のなかは    配列の番号
    ?[]        のなかは    エクセルでの項目名(列の名前) です。

例えば、 

variables('担当リスト')[0]?['氏名']

と指定すると、エクセルでいうと以下の赤枠のデータを参照できます。

valuablesどこで書く?

こんな風に、式から入力します。


実行結果