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 "パスワード設定が完了しました。"