2023年5月20日土曜日

【PowerAutomate】outputs(出力結果)から欲しい値を取得する書き方

event_note5月 20, 2023

 いつも書き方をわすれてしまうので出力結果から特定の項目を取得する方法をメモしておく。

 

やりたいこと 

この出力結果から「従業員コード」の値をゲットしたい。


方法

outputs('操作名')['body/value'][何行目]?['取得したい項目名'] と書けば取得できる。

 

outputs('表内に存在する行を一覧表示')['body/value'][0]['従業員コード'] と書けば取得できる。
outputs('表内に存在する行を一覧表示')['body']['value'][0]['従業員コード']のように/で分かれているところは別々のカッコに分けてもOK

 

補足

 フローの実行結果の画面から「未加工出力の表示」をクリックすると、出力結果の全体が表示されます。


これが出力結果全体の表示

従業員コードにたどり着くまでに、

body→value→従業員コード と入れ子になっています。 

青枠のような [] が出てきたときは、同じ形式のデータがいくつか続くため、何番目の物を使うかの指定が必要。何番目かを0から指定する。(1からではない。)

今回の場合は、最初のデータなので0番目となるため、['value'][0] と指定します。

で、outputs(~)というのは、~という操作をした時の出力結果ということです。

なので、

outputs('表内に存在する行を一覧表示')['body']['value'][0]['従業員コード']

とかけば、OKです。

['従業員コード']の先がさらに入れ子になっているときも[]が出てきた場合は、番号で指定、[]がなければ、項目名を書いていくを繰り返していけばOKです。


 

2023年5月14日日曜日

WindowsでNode.jsをインストールする方法

event_note5月 14, 2023

先にかいた、データベース(エクセル)から値を取得して、ウェブに表示するという事を実現するためにはNode.jsをインストールする必要があるとわかったのでインストールしてみることにしました。

 

インストール方法

Node.jsのダウンロードのページに行き、安定している推奨版をダウンロードする。
最新版はバグがおおいからやめておいた方がよいです。

ダウンロードしたインストーラをクリック

「I accept~」の左のチェックを入れて次へ「Next」をクリック

インストール先を変えたければ変更して「Next」を押す。

初期値は「C:\Program Files\nodejs\」。
私は、Dドライブに変更しました。


インストール内容をカスタマイズしたいなら、変更して、「Next」を押す。

今回は変更しませんでした。

ネイティブモジュール作成のためのツールをインストールする場合はチェックを入れて「Next」を押す。

今回はチェックを入れませんでした。

「Install」をクリック。

インストールが完了の画面がでるので、「Finish」を押して終わります。

以上で完了です。


 

2023年5月13日土曜日

JavascriptでActiveXObjectを使ったADO接続(それ以外も)が使えない

event_note5月 13, 2023

Javascriptでデータベース(エクセル)のデータを読み込み、ブラウザに表で表示しようと試みました。

やり方がわからないのですが、ADOを使えないのかなと思って調べると、色々な方が方法を紹介していたので、試していました。

接続して、その内容をFireFoxのブラウザで表示してみようと試したところ、
「ActiveXObject is not defined」

とエラーが表示されました。

 

htmlファイルに記述した内容は以下の通りです。

	document.addEventListener('DOMContentLoaded', () => {

	//データベースにアクセスする
	function dbConnect(){
		var gConnection = new ActiveXObject("ADODB.Connection");
		gConnection .Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\tbl.xlsx;Extended Properties=Excel 8.0;HDR=Yes;IMEX=1");
		alert("データベースに接続しました。");
	}

	dbConnect();

	/*  以下、略*/

ググってみたところ、ActiveXObjectはIEでしか使えないとの事。

それじゃぁ、Edgeでいけるかな?と試したところ同じエラーが表示されました。

ふたたびググった結果、

ActiveXObjectはEdgeでは使えないとのこと。

そうだったのか…。

この方法は無理なのね。

他の方法をさがしてみようっと。


2023年5月6日土曜日

【PowerAutomate】OutlookメールのメッセージIDは一意だが変わる

event_note5月 06, 2023

 PowerAutomateで受信したメールのメッセージIDを保存しておき、あとでそのメッセージIDのメールに対して返信するという事をやろうとしたら、うまくいきませんでした。

 同じメールなのに、メッセージIDが変わってしまいました。

原因はフォルダの移動。フォルダを移動すると、メッセージIDが変わってしまいます

 提出1.xlsxの添付があるメールが「hokoku」にあるときと「sumi」フォルダにあるときはメッセージIDが違っていました。

なので、

①「hokoku」フォルダにある時にメッセージIDを取得し、

②メールを「sumi」フォルダに移し

③ ①のメッセージIDを使って返信すると

エラーになってしまいます。 

①のときと②の時のメッセージIDが違うのです。フォルダを移すと、ちがうIDになるなんて不便ですね…。

 



2023年5月4日木曜日

VBScript エクセルファイルにパスワードを設定して上書き保存

event_note5月 04, 2023

やりたいこと

エクセルファイル(複数)をvbsアイコンにドラッグアンドドロップするとパスワードを設定してファイルを上書き保存する。

補足

・複数のエクセルに設定されるパスワードは同一 

・スクリプトを保存するときは、日本語対応の文字コードにする。

ソース

' Password Set Program.
Option Explicit
On Error Resume Next

	'パスワード
	Dim Password
	Password = "110" ' 設定したいパスワードの値

	'ドラッグアンドドロップで取得したファイルパスを変数に入れる
	Dim GetPathArray
	Set GetPathArray = WScript.Arguments 
	
	Dim NullStr
	NullStr = "" ' Null文字列 をセット。

	Dim Obj_Excel
	Set Obj_Excel = WScript.CreateObject("Excel.Application")

	Dim Book_1

	'イテレータ
	Dim pt


	Obj_Excel.Application.DisplayAlerts = False '警告メッセージ等を非表示に設定
	Obj_Excel.Visible = False	'エクセルは非表示にする

	'ファイルの数分ループする
	For Each pt in GetPathArray  
		'--------------------------------------------------------------
		Set Book_1 = Obj_Excel.WorkBooks.Open(pt,,,,NullStr) ' 空の文字列でオープンする。
		Book_1.SaveAs pt,,Password ' 書き込み時パスワードを指定して保存する。
		Book_1.Close
		'--------------------------------------------------------------
	Next

	Obj_Excel.Visible = True
	Obj_Excel.Quit
	MsgBox "パスワード設定が完了しました。"

2023年1月7日土曜日

【FireFox】pdfをダウンロードせずに開きたい!設定方法を紹介

event_note1月 07, 2023

最近気が付いたのですが、ブラウザでpdfのリンクをクリックするとファイルが開かれず、ダウンロードフォルダに保存されてしまうようになっていました。

 いちいち、ダウンロードフォルダに移動してファイルを開くのが面倒。また、過去にダウンロードしたファイルが保存されているため、どれが今見たいファイルかわからない…。

クリックしたら、pdf開いてほしい…。

 しばらく無視していたけど面倒なので設定を見直すことにしました。

 以下、設定方法を紹介します。

設定方法 

ブラウザの右上から設定画面を開く

Pdfをクリックした場合の動作を「Firefoxで開く」に変更する


以上です。

最近、pdfよく見るから設定しなおしてよかったー。楽になったよ。 

関係ないけど、pdfってportable Document Formatの略なんだね。初めて知りました。

2022年11月15日火曜日

【PowerApps】Sharepointリストの列名がみつからない!関数で使えない!参照したいのにナゼ?

event_note11月 15, 2022
PowerAppsをなんとなく使えるようになるように、簡単なアプリを作っています。その上で、

困った事

PowerAppsのギャラリーでSPOのリストを表示するために列名を指定しようとしたのですが、列名がみつかりません。列名を入力してもエラーになる。

原因

関数によってはリストの列名が全角の場合はつかえない。フィールド名(プログラム内部でつかう列の別名)を使う必要がある。

ギャラリーの設定画面などを確認すると、リストで作った列名(↓だと"操作")のほかにフィールド名(↓だと"OData_x64cd_x4f5c_")がのっており、これを使わなければいけないようです。

補足

・リスト作成時に列名を全角で付けると、長ーいフィールド名を勝手につけられてしまう。
そのため、列名はまずは半角英数のみで付けた方が良い。
そうすれば、列名=フィールド名となる。

・フィールド名は変更不可だが、列名はあとで変更可能。

解決策

その1

リスト作成時の列名は、半角英数で作成する。(後で変更可能)

その2

列名ではなくフィールド名を方を使う。
(OData_x64cd_x4f5c_ みたいな長い名前。)

たとえば、確認したいリストをギャラリーやデータテーブルビューと接続して、プロパティ→フィールドの編集→追加画面からフィールド名を確認することができます。

が、コピペできません。もっと楽な確認方法ないのかな?

【PowerApps】Form経由じゃないデータベース更新ってどうするの?

event_note11月 15, 2022

 プログラミング未経験者がPowerAppsでアプリを作っていたりしているのを見て、すごいな!面白そうだな!と思って、アプリをつくる練習をしはじめました。

エディタに入力した値を、データベースに更新するというところは何とかできるようになりました。

Form⇔データベースの紐づけをして、Form上に入力エディタなどを配置すると、submitFormat(Form名)という風に関数を使えば、コントロールに入力された値を簡単にテーブルに更新してくれるということがわかりました。

PowerApps初心者の私としては、この時点で、テーブル更新するのはsubmitFormat関数ね!という理解。

ところが、このかなり大雑把な理解で困ったことがすぐに発生しました。

Form経由じゃないデータベース更新ってどうする?

え、コントロールへの入力値以外をデータベースに更新するときって、どうするの!?

という事です。

例えば、なんらかの処理結果やボタンを押した日時をログとしてデータベースに更新したいとき等です。

Collect関数を使う

そこで、調べてみるとCollect関数を使えばよいと!なるほど。

これを使えば、データベースを更新できるんですね!
下の例では、

「操作ログ」というテーブルの
「操作」列に"追加"という値を
「結果」列に"NG"という値を

更新します。

Collect(操作ログ,{操作:"追加",結果:"NG"});


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

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

設定方法

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


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


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