Windows

2021年05月24日

Power Automate Desktopで祝日判定をしてみた


最近Power Automate Desktopが便利すぎて深夜にいじくるなどしている。眠い。

うちの会社、週報を週初めに出さなきゃいけなくて。
で、その作業が少しでも楽になるといいなーと思っていろいろ試してみた、というメモ。 

祝日判定をするために、まずは元ネタ探しということで、
内閣府の 「国民の祝日」について というページからCSVファイルを取ってくることにした。

①元データ(syukujitsu.csv)と元データから作った昨年度以前のデータ(syukujitsu_del.csv)を同じフォルダに配置。
②CSVファイルからそれぞれ日付を読み取り、リスト形式にする
③両方に存在する日付は除外する
④残った日付を使用して今年度以降の祝日判定をする

ということを考えて実装したものがこちら。

202105240057

書いたことほぼそのままやってるだけ。

ちなみにいちばん下のFor eachは、祝日判定そのものをやっている。
(CurrentItem:祝日の日付、FormatDateTime2:yyyy/mm/dd形式の実行時の日付 テキスト形式)
祝日だったら処理をしない、みたいな感じにしている。
その場で処理を中断したかったが、それっぽいものが見当たらなかったので。
もし見つけたら置き換えるつもり。

実業務では非稼働日カレンダーか何かをCSVファイルにして特定のフォルダに配置&定期的に更新しておくと、フローが動く日と動かない日がすぐ分岐できるから便利になるのかなーとか思った。


自分が作成したフローも、実は曜日判定をしていて、土日は処理をしないようになっている。
土日ぐらい仕事せずに休もう?な?

riku_cha at 01:15|PermalinkComments(0)

2021年05月20日

Power Automate DesktopでURLに日付情報を埋め込む


昨日ちょっとハマったのでメモ。

勤務管理システムとかでURLなどに日付の情報が埋め込まれているときに、
現在の日時を基に正しい情報に自動でアクセスするための設定。 
(要は日によってアクセス先が変わってしまうどうしよう、というときの対応方法)

①現在の日時を取得

アクション欄の「現在の日時を取得します」という項目を選択
特定のタイムゾーン(Asia/Tokyo)の現在の日時を取得するように設定。
202105201349





















生成された変数に「CurrentDateTime」という変数が表示されている。
この変数に日付と時間の情報が格納されている。


②日付情報をテキストに変換して変数に格納
アクション欄の「datetimeをテキストに変換」という項目を選択
「変換するdatetime」に先ほど生成したCurrentDateTime、使用する形式は私用したい形式に従って標準形式から選択するか、カスタム形式として形式を入力する。
202105201357

私は年(yyy)と月(MM)と日(dd)を使用する必要があったのでそれぞれカスタム形式欄に入力。
FormatDateTime(、2、3)という変数に格納。

参考:フロー内の日付と時刻の値をカスタマイズ/書式設定する方法


③右端のUI要素のアイコンをクリック、修正するWebページのURLを選択し「UI要素名の変更」からURLを修正
上で取得した変数を使用する箇所は、「%FormatDateTime%」という形で修正した。


④テスト実行
うまくいったらフローを保存。


これで日によってアクセス先が違うという問題が解決し、
次の日でもうまいこと動くようになった。やったー。


riku_cha at 13:53|PermalinkComments(1)

2021年05月19日

Power Automate DesktopでWebシステムへのログインを自動化した


Windows10使っている人なら無料で使えるPower Automate Desktop。
触ってみたいと思ったので簡単にフローを作ってみました。

202105191209














大学のシステムにログインしつつ、使用するフォルダを開く作業を自分なりにフロー化した結果こうなりました。

使ってみたらこれめっちゃ便利!!!って思ったので、
ちょこちょこいろんなフロー組んでみようと思います。
なにこれ超楽しい。


(これ作業開始と終了時の作業をそれぞれフローに落としておいたらめっちゃ便利になりそう…。)

riku_cha at 12:18|PermalinkComments(0)

2014年05月12日

Windowsでイベントビューアにテストイベントを出力する


業務でやったことをメモメモ。

イベントビューアにテストイベントを出力したい場合、EVENTCREATEコマンドで出力することができます。

=============
EVENTCREATE [/S システム [/U ユーザー名 [/P [パスワード]]]] /ID イベントID
            [/L ログ名] [/SO ソース名] /T 種類 /D 説明

説明:
    このコマンド ライン ツールで管理者が指定のイベント ログに
    カスタム イベントを作成します。

パラメーター一覧:
  /S      システム             接続先のリモート システムを指定します。

  /U     [ドメイン\]ユーザー   コマンドが実行されるユーザー コンテキストを
                               指定します。

  /P      パスワード           指定のユーザー コンテキストのパスワードを
                               指定します。

  /L      ログ名               イベントを作成する先のイベント ログを指定
                               します。

  /T      種類                 作成するイベントの種類を指定します。
                               有効な種類: SUCCESS、ERROR、WARNING、INFORMATION

  /SO     ソース               イベントに使用するためのソースを指定します。
                               (指定しない場合は、既定のソースは'eventcreate'
                                になります。)ソースにはどの文字列を指定しても
                               有効であり、イベントを作成するアプリケーション
                               またはコンポーネントを示すものです。

  /ID     ID                   イベントに対するイベント ID を指定します。
                               1 から 1000 の範囲のどの数字も有効
                               です。

  /D      説明                 新しいイベントの説明文を指定します。

  /?                           このヘルプを表示します。
=============

IDは1~1000に限られますが、とにかくイベントビューアにテストイベントを出力したいんだ!という場合には使えそう。


EVENTCREATEコマンドを使用して、実際に存在するソース名を指定した場合、イベントが作成できないことがある。
(存在しないソース名なら作成できる)
デフォルトの状態では作成できない仕様のようなので、レジストリいじって通知できるようにしてみた。

①regedit開く
②HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlogに移動
③指定しようとしているソースが出力されるログ(SystemとかApplicationとか)と同じ名前のディレクトリ開く
④指定しようとしているソース名と同じ名前のディレクトリを開く
⑤DWORDを作成。名前は「CustomSource」
 ※ここでエラーが出力される場合、アンチウイルスソフトが設定変更を邪魔してる、等の可能性あり。
  イベントログを確認して何が原因かを確認するといいかも。
⑥CustomSourceの値を1に修正
⑦EVENTCREATEコマンドを再実行

少なくとも、うちの環境ではこれで出力された。
レジストリでCustomSourceが1になっているソース名でないと、ソースを指定したイベントの出力はできない。

テスト前に確認しておいたほうがいいかも。


riku_cha at 10:38|PermalinkComments(0)TrackBack(0)

2014年02月24日

アクセス権限設定をCUIでやってみる(そのいち)


仕事でアクセス権限設定やってたときに、
「あれ?なんか前に調べたことがあるような・・・?」と思ったのでメモ。

===========================
CUIでアクセス権限設定を確認する
・cacls
 アクセス制御リスト(ACL)の表示(変更もできるらしい)
 現在のWindows OSでは推奨されていない。(icaclsつかってねって出力されます)

出力例:
C:\Users\Administrator>cacls .
C:\Users\Administrator NT AUTHORITY\SYSTEM:(OI)(CI)F
                             BUILTIN\Administrators:(OI)(CI)F
                             Temp\Administrator:(OI)(CI)F


C:\Users\Administrator>
OI:オブジェクト継承(サブフォルダ以下のファイルに対して継承)
CI:コンテナー継承(サブフォルダ以下のフォルダに対して継承)
F:フルコントロールの意味

他に
IO:継承のみ(継承はするけどアクセス権はない?)
ID:継承済み(親から継承されたアクセス権)
があるらしい。


・icacls
 アクセス制御リスト(ACL)の表示・変更

出力例:
C:\Users\Administrator\Desktop>icacls .
. NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
  BUILTIN\Administrators:(I)(OI)(CI)(F)
  Temp\Administrator:(I)(OI)(CI)(F)

1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした

C:\Users\Administrator\Desktop>

I:親コンテナーから継承した権限(caclsでいうIDにあたる??)
IO:同じ
NP:継承を適用しない

icaclsだと、「特定のファイルとフォルダのACLファイルを作成→リストア」ということができる。
ACLファイルを出力するには
icacls <フォルダ名> /save <ACLファイル名> /T

復元(リストア)するには
icacls <フォルダ名> /restore <ACLファイル>

※当然、リストア前の権限は消されるので作業の際は慎重に。


外部ディスクのファイルをバックアップ・リストアしたときに、権限変わってないか確認するって作業で
icaclsを使ったような気がする・・・
(確か作業前後でファイル出力してFCでファイル比較してたような)

あとで出力して調べてみよう。



riku_cha at 12:58|PermalinkComments(0)TrackBack(0)