- Gitコミットと公開
以下でGit(ローカル)の履歴を作る。git init -b main git add . git commit -m "Initial commit"
以下でGitHubに公開する。
git remote add origin https://github.com/ユーザー名/リポジトリ名.git git push -u origin main
「-u」はGitのショートカットで2回目以降は「git push」のみでmainが更新される。
ただし、これはmainが向き先の場合に限定され、
「git switch」でbranchに向いている場合、初回に「git push」を実施したらエラーになる。
【Antigravity】インストール
-
インストール
Power Shellを管理者権限で起動し、以下を実行。irm https://antigravity.google/cli/install.ps1 | iex
インストールすると以下のディレクトリにexeファイルが配置される。
インストール先
%LocalAppData%\agy\binPCのシステム環境変数に上記のインストール先をPathに設定するとVSCodeでも利用できる。
VSCodeを起動したら、プロジェクトディレクトリを作成し、
そこに移動後、「agy」を起動すると初期設定が始まる。ターミナルの高さをあげると応答内容が見やすくなる。
【NodeJS】基本コマンド
-
基礎
Node.jsを学ぶ上でまずは基礎知識として、以下をサイトを利用するべき。JSPrimer
https://jsprimer.net/Node.jsはプログラミング言語であるJavaScriptをブラウザの外(サーバー上やパソコンの端末)で実行できるようにするための「実行環境(ランタイム)」のこと。
-
基本コマンド
node:JavaScriptを実行する
npm:パッケージを管理する
npx:パッケージを実行する
-
インストールと実行:一時実行
npx –yes @js-primer/local-server
インストール先
%LocalAppData%\npm-cache\_npx
実行
npxはインストールと実行同時
-
インストールと実行:プロジェクトインストール
npm install @js-primer/local-server
インストール先
<プロジェクト>\node_modules
実行
js-primer-local-server
※binフォルダに「js-primer-local-server」や「js-primer-local-server.cmd」や「js-primer-local-server.ps1」が作成済み
-
インストールと実行:グローバルインストール
npm install -g @js-primer/local-server
インストール先
C:\xxxxxx\nodejs\node_modules
上記にPathが通る
実行
js-primer-local-server
※binフォルダに「js-primer-local-server」や「js-primer-local-server.cmd」や「js-primer-local-server.ps1」が作成済み
【Power Apps】添付ファイルをPower Automateで処理
-
添付ファイルをPower Automateで処理
添付ファイルをPower Appsでデータソースとして登録せずにPower Automateで処理する方法。添付ファイルコントローラーはデータソースに一時的にShare Pointを追加し
Formを作ろうとすると、添付ファイルコントローラーが自動的に追加されるので、
その添付ファイルコントローラーを切り取りして使うと効率が良い。Galleryを追加しておき、Itemsには「colItemAttachmentFile」を設定しておく。
Gallery内にはテキストと画像を配置し、それぞれ「ThisItem.Name」と「ThisItem.Value」を設定しておく。
Galleryは非表示としておく。画面でボタンをクリックしたら以下の処理を行う。
ClearCollect(colItemAttachmentFile, S01_atc_添付ファイル.Attachments); ForAll(S01_gly_添付ファイル一覧.AllItems As tmp, Collect(colUpdateFile, { Title: tmp.Name, FileData: tmp.S01_obj_添付ファイルオブジェクト.Image, Name: tmp.Name, Value: tmp.S01_obj_添付ファイルオブジェクト.Image } ) ); Collect(colItemBase, {添付ファイル: colUpdateFile}); Set(gblJSONData, JSON(colItemBase, JSONFormat.IncludeBinaryData)); PowerAutomate名称.Run(gblJSONData)Power Automateの処理は以下の通り。
・Share Pointコネクタ-新しいフォルダの作成
一覧またはライブラリ:ドキュメント
フォルダーのパス:00_管理/添付資料/Share PointのID/日付・それぞれに適用する:添付ファイル
前のステップから出力を選択します:body(‘JSON_の解析’)・JSONの解析:添付ファイル
Content:items(‘それぞれに適用する:添付ファイル’)[‘添付ファイル’]
Schema:以下の内容{ "type":"array", "items": { "type":"object", "properties": { "FileData": { "type":"string" }, "Title": { "type":"string" } }, "required": [ "FileData", "Title" ] } }・それぞれに適用する:添付ファイル単一
前のステップから出力を選択します:body(‘JSON_の解析:添付ファイル’)・変数の設定
名前:添付ファイル識別子
値:string(variables(‘添付ファイル識別子整数’))・変数の設定
名前:添付ファイル名分割配列
値:split(items(‘それぞれに適用する:添付ファイル単一’)[‘Title’],’.’)・変数の設定
名前:添付ファイル名の日付付与
値:concat(variables(‘添付ファイル名分割配列’)[sub(length(variables(‘添付ファイル名分割配列’)), 2)],’_’,variables(‘添付ファイル識別子’))・変数の設定
名前:添付ファイル名禁則文字置換
値:replace(items(‘それぞれに適用する:添付ファイル単一’)[‘Title’],variables(‘添付ファイル名分割配列’)[sub(length(variables(‘添付ファイル名分割配列’)), 2)],variables(‘添付ファイル名の日付付与’)),’>’,”)
上記以外に「<」などの禁則文字を空欄に置換
【Power Apps】複雑な検索処理
-
複雑な検索処理
Power Appsでコレクションに対して複雑な検索処理を実施する方法は以下の通り。With( If(gblユーザー種別="一般ユーザー", // 一般ユーザーの場合 {baseFiltered: Filter(colコレクション, Find(gbl操作者メールアドレス, 照会者メールドレス) > 0 && 表示フラグ = true && }, If(gblユーザー種別="一般管理者", // 一般管理者の場合 {baseFiltered: Filter(colコレクション, ステータス <> "一時保存中" && Find(gbl操作者メールアドレス, 閲覧者メールドレス) > 0 && 表示フラグ = true && }, // 上級管理者の場合 {baseFiltered: Filter(colコレクション, Find(gbl操作者メールアドレス, 閲覧者メールドレス) > 0 && } ), With( {baseFiltered2: Switch(S01_rgo_検索条件切り替え.Selected.Value, "検索条件なし", baseFiltered, "タイトルで曖昧検索", Search(baseFiltered, S01_txt_タイトル.Text, タイトル), "照会者名で曖昧検索", Search(baseFiltered, S01_txt_照会者名.Text, 照会者名), ) }, With( {baseFiltered3: SortByColumns(baseFiltered2, "ID", If(gbl表示順 = "降順", SortOrder.Ascending, SortOrder.Descending)) }, Filter(baseFiltered3, If(S01_drp_フィルターステータス.Selected.Value = "ステータス", true, IsBlank(S01_drp_フィルターステータス.Selected.Value) || ステータス = Text(S01_drp_フィルターステータス.Selected.Value) ), If(S01_drp_フィルター部署名.Selected.Value = "部署名", true, IsBlank(S01_drp_フィルター部署名.Selected.Value) || Left(照会者ユーザー情報.Department, Find("/", 照会者ユーザー情報.Department) -1) = Text(S01_drp_フィルター部署名.Selected.Value) ) ) ) ) )
【Power Apps】Share Pointのユーザー列を取得後の処理
-
Share Pointのユーザー列を取得後の処理(単一選択)
Share Pointのユーザー列をPower Automateで取得後の処理は以下の通り。ClearCollect(colコレクション, ForAll( Table(ParseJSON(PowerAutomate名称.Run().resultJson)), { ID: Value(ThisRecord.Value.ID), ユーザー氏名: Left(Text(ThisRecord.Value.ColumnUser.DisplayName), Find("(", Text(ThisRecord.Value.ColumnUser.DisplayName)) -1) } ) )
-
Share Pointのユーザー列を取得後の処理(複数選択)
Share Pointのユーザー列をPower Automateで取得後の処理は以下の通り。ClearCollect(colコレクション, ForAll( Table(ParseJSON(PowerAutomate名称.Run().resultJson)), { ID: Value(ThisRecord.Value.ID), ユーザー氏名: Concat(ForAll(Table(ThisRecord.Value.ColumnUser), {DisplayName: Text(ThisRecord.Value.DisplayName)}), Left(DisplayName, Find("(", DisplayName) -1), ";") } ) )
【Power Apps】ドロップダウンやコンボボックスのItems
-
ドロップダウンやコンボボックスのItems
ドロップダウンやコンボボックスのItemsは単純に実装すると「ShowColumns(担当者マスタ, 表示名)」のようになるが、
この形式の場合、担当者マスタからデータを削除すると、このデータをトランザクションデータに持つデータを
表示しようとすると、画面表示時にそのデータが選択されなくなってしまう。
そのため、以下の対策を取ることがある。Table({Value: Blank()}, ShowColumns(担当者マスタデータ, 表示名), Distinct(ShowColumns(トランザクションデータ, 表示名), 表示名))
【Power Apps】ドロップダウンとコンボボックスの初期値
-
ドロップダウンの初期値
ドロップダウンのItemsで表示している内容を設定している変数をDefaultに設定すると画面表示時に初期設定される。
-
コンボボックスの初期値
コンボボックスのItemsで表示している内容を設定している変数をDefaultSelectedItemsに設定すると画面表示時に初期設定される。
例えばそのコンボボックスが複数選択可能なShare Pointのユーザー列の場合、以下のようにすると初期設定される。ForAll( gblSelectedItem.複数選択可能なユーザー列, { Claims: ThisRecord.Claims, Department: ThisRecord.Department, Email: ThisRecord.Email, DisplayName: ThisRecord.DisplayName, JobTitle: ThisRecord.JobTitle, Picture: "" } )
【Power Apps】Share Pointフォルダ作成時の禁則文字
-
Share Pointフォルダ作成時の禁則文字
Share PointにPower Automateでフォルダ作成時に以下の禁則文字があるとエラーになります。・先頭半角スペース ・末尾半角スペース ・コロン ・ダブルクォーテーション ・アスタリスク ・小なり ・大なり ・クエスチョン ・スラッシュ ・バックスラッシュ ・パイプ ・末尾ピリオド ・上記以外に制御文字(例えばタブ)
対応方法としては、フォルダパスを構成する要素をPower Apps側でチェックするのが実施しやすい。
例えばPower Apps画面のテキストボックスの値がそのままフォルダに使われる場合、
以下のチェック処理を実施する。If(IsMatch(DataCardValue.Text, "[:""*<>?/\\|.\t]", MatchOptions.Contains), "[:""*<>?/\\|.タブを含めることはできません。" If(Left(DataCardValue.Text, 1)=" " || Left(DataCardValue.Text, 1)=" ", "先頭にスペースを含めることはできません。", "問題ありません。" ) )
【Power Apps】FromのItemとGalleryのItemsの違い
-
FromのItemとGalleryのItemsの違い
画面のOnVisibleに以下が指定されているとする。ClearCollect(colSampleList, SampleList); UpdateContext({locSampleList: First(colSampleList)});FormのItemとGalleryのItemsに以下が指定されているとする。
FormのItem:locSampleList(Form内の項目はThisItem.項目名) GalleryのItems:colSampleList
画面のボタンのOnSelectに以下が指定されているとする。
Patch(colSampleList, locSampleList, { Title: "テスト更新", Name: "山田 太郎更新" } ); ResetForm(Form1);上記のボタンをクリックした場合、
Form
キャッシュされるため、Patchで更新しても最新化されない。
最新化するためには項目のDefaultに変数を指定し、その変数を最新化する必要がある。Gallery
常に最新化される。※GalleryがFormの中にある場合も同様の動作となる。