投稿

【PowerShell】Slackに日本語のコメント付きで投稿するPowerShell

 なんか月の作業でSlackに添付ファイル付けて投稿するとかいう定例の作業があるので面倒なので何とかできないかと思ってPowerShellを準備してみました。結構手こずりましたが何とか動きました。 SlackのAPI難しい・・・・。 ■PowerShell # Slack APIのトークンと投稿先チャンネルを設定 $slackToken = "xoxp-" $channel = "T" # チャンネルIDを適宜変更 $scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path # テキストファイルから日本語メッセージをUTF-8エンコーディングで読み込む $filePath = Join-Path -Path $scriptPath -ChildPath "work\message.txt" $message = Get-Content -Path $filePath -Raw -Encoding UTF8 # 月と年を取得 $month = Get-Date -Format "MM" $year = Get-Date -Format "yyyy" # $monthを置換してコメントにセット $message = $message -replace '\$month', $month # Slack APIに送信するリクエストの組み立て $apiURL = "https://slack.com/api/files.upload" $headers = @{ "Authorization" = "Bearer $slackToken" } try { # 添付ファイルのパスを設定 (ここでは例として"yyyymm_capture.xlsx"を指定) $attachmentFileName = "work\{0}{1}_capture.xlsx" -f $year, $month $attachmentPath = Join-Path -Path $s...

【GoogleAPPScript】GASでマトリクス表を作成させる

イメージ
 上司から何かあるとすぐに マトリクス表 で考えろと言われるので、マトリクス表を手動で作っていたけど、これ規模が拡大してくると絶対ミスるよなと思い、Googleスプレッドシートで自動生成してくれるものを準備した。 なんか最近こういうの多い・・・・。 同じ文字列だと数字の1を立ててくれて総当たりみたいなことはできるようにはしています。 なので、総当たりみたいな感じのことをしたときは同じものが当たらない様にはしてくれます。 ■GASコード function matrix() { const SHEET_URL = SpreadsheetApp.getActiveSpreadsheet().getUrl(); const ss = SpreadsheetApp.openByUrl(SHEET_URL); const cs = ss.getSheetByName('マトリクス図検討'); const START_ROW = 3; const VERTICAL_COL = 1; const SIDE_COL = 2; const SHEETNAME_CELL = 'B1' const matrix = createMatrix(cs) // write spreadsheet const sheetname = getsheetName(cs,SHEETNAME_CELL) writeSheet_matrix(ss,matrix,sheetname,VERTICAL_COL); } function createMatrix(sheet) { const rangeA = sheet.getRange("A3:A").getValues(); // A4から最終行までの値を取得 const rangeB = sheet.getRange("B3:B").getValues(); // B4から最終行までの値を取得 const numRowsA = rangeA.filter(String).length; // A列の値が入力されている行数を取得 const numRowsB = rangeB.filter(String).length...

Hyper-Vで開発用のUbuntu環境を構築

Hyper-VにUbuntu22.04LTS入れて開発環境作成したんでその時の作業メモを残しとく。 別にネットでどっかから拾ってこれるもんだけれども・・・。 自分の備忘録でおいておこうかと。そのうちShellスクリプトにでもして手でコマンド打たなくてもよくしたい。 1.初期設定 1-1.日本語化 $ sudo sed -i.bak -e "s%http://us.archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list $ sudo apt-get -y install language-pack-ja-base language-pack-ja ibus-mozc $ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" $ source /etc/default/locale $ echo $LANG ja_JP.UTF-8 1-2.タイムロケール変更 $ sudo timedatectl set-timezone Asia/Tokyo $ timedatectl 1-3.ソフトウェアアップデート $ sudo apt-get update $ sudo apt-get -y upgrade 1-4.ディストリビューションアップデート $ sudo apt-get -y update $ sudo apt-get dist-upgrade 1-5.デフォルトエディタ変更 $ sudo update-alternatives --config editor alternative editor (/usr/bin/editor を提供) には 4 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /bin/nano 40 自動モード 1 /bin/ed ...

【GoogleAPPScript】住所の補正用のスクリプト

小ネタです。   住所の突合しないといけないくて、最初はEXCELのマクロでやろうとしていたけどマクロ付シートで保管するのが嫌だったので、Googleスプレッドシートを使用して突合しました。 最初は REGEXREPLACE関数 で何とかできるかと思いましたが、それではどうにもならないのでGASの力を借りることにしました。 ユーザ関数を使用して ChatGPT と Bard の力を借りてスクリプト完成、なんかもはや自分みたいなコピペの権化は不要になるんだなと思いつつ・・・ ■スクリプト function formatAddress(input) { if (!input) { return input; } // 漢数字を通常の数値に変換(最大四十二) input = input.replace(/一丁目/g, "1丁目"); input = input.replace(/二丁目/g, "2丁目"); input = input.replace(/三丁目/g, "3丁目"); input = input.replace(/四丁目/g, "4丁目"); input = input.replace(/五丁目/g, "5丁目"); input = input.replace(/六丁目/g, "6丁目"); input = input.replace(/七丁目/g, "7丁目"); input = input.replace(/八丁目/g, "8丁目"); input = input.replace(/九丁目/g, "9丁目"); input = input.replace(/十丁目/g, "10丁目"); input = input.replace(/十一丁目/g, "11丁目"); input = input.replace(/十二丁目/g, "12丁目"); input = input.replace(/十三丁目/g, "13丁目")...

【DOSのバッチ】GitからCloneしてきてCommit後にPushする

 ちょっと必要になったのでサクッと準備してみた。 シュチュエーションとしてはCSVファイルとか設定ファイルだけ外部管理してたんだけどそれをGit管理に切り替えたんだが、コマンド打つの面倒なので、カレントフォルダで作業できるようにするためです。毎回手で打てばいいんですけどね・・・ 前提条件としてWindows側にGitの設定ができていることが必要っす。 BATファイルはUTF-8でCRLFで保存してください。 @echo off chcp 65001 set WORK_DIR=%~dp0 echo ***** start ***** rem "### 対象リポジトリ取得" set /p RELEASE_VERSION=Input Git target version: IF %RELEASE_VERSION%==dev ( echo *** cloning dev ***** git clone https://github.com/XXXX ) else ( echo *** cloning release/v%RELEASE_VERSION% ***** git clone -b release/v%RELEASE_VERSION% https://github.com/XXXX ) rem "### ブランチ準備" set /p BRANCH_NO=Input branch name: set BRANCH_NAME=feature/%ISSUE_NO% echo ***** make branch feacure/%BRANCH_NO% ***** cd %WORK_DIR%XXXX git checkout -b %BRANCH_NAME% echo ***** branch create done ***** git branch rem "### 対象ファイルコピー後にCommitする :filecopy set /p TARGET_ANSWER="対象ファイルのコピーは完了しましたか? (Y/N)?" if /i {%TARGET_ANSWER%}=={y} (goto :filecopy_yes) if /i {%TARGET_ANSWER%}=={...

【GoogleAPPScript】デシジョンテーブルの作成を自動化してみた

イメージ
前回から4か月空きました・・・。 ネタがないというところと仕事に忙殺されて時間がなくて、ブログに割く余力がありませんでした。久しぶりにGoogleAppScriptネタです。   テストケースの洗出しで デシジョンテーブル を作成する必要が出てきて、 GIHOZ を使えれば簡単に作成できるものの、そういうテストツールにはお金を出してくれない環境なので、何とかできないか考えてみた。最初はEXCELで何とかしようと考えてVBAでデシジョンテーブル作成してくれる まんまのもの があったものの欲しかったものと違う。 会社では Googleスプレッドシート を使っているのでまぁ関数をコピペするだけで何とかできないかと思ったものの、そもそもEXCELですらVBAを使ってやっておられるくらいなのでそういう関数もなく。自分は頭悪いのでそういう内容も思いつかず GAS 使って何とかするしかないよなということで探しましたが見つからず・・・・。困り果てていたところでpythonで デシジョンテーブル作成されている方 がいらっしゃってそこでアイデアコピペでググりましたよ。 フルコピペでGAS作成しました。まぁ意図通りのができたのでめでたしめでたしです。 ■GASコード function myFunction() { const SHEET_URL = SpreadsheetApp.getActiveSpreadsheet().getUrl(); const ss = SpreadsheetApp.openByUrl(SHEET_URL); const cs = ss.getSheetByName('デシジョンテーブル検討'); const START_ROW = 3; const CONDITION_COL = 1; const ACTION_COL = 2; const SHEETNAME_CELL = 'B1' // conditional partial generation const TRUE_MARK = 'Y'; const FALSE_MARK = 'N'; const packet = {}; let combinationSubtract = 2; ...

【最終回】(続)静的Webサイトホスティング二重化してみる(その5)

 静的サイトWebホスティングシリーズもこれで最後です。 最後の難関 Terrform です。GCPの時に AWSの部分 は作っていて、そのまま動くか不安でしたが、ほぼそのまま動いてくれたのでAWSはほぼ流用です。 Azureでこちらの作成がメインです。自分が弱いだけに方々からコピペして作成しています。日本語の情報があまりない(自分の探し方が下手)ので英語のサイトばっか漁りましたが 英語が絶望的なのでほとんど情報が見つけられませんでした。 もっと気が利いた表現が英語でできればかなり早く調べられるのになぁ。 50近いおっさんがそんなすぐにツヨツヨにはなれないので地道に調べるしかないです。 まぁ、今回の構成は世間で既に誰かがやっているかもしれませんが・・・残念ながら見つけられませんでした。 ◆シリーズ その1:AWSでCloudFront+S3構成を作る その2:AzureでApplicationGateway+Blob構成を作る その3:DNSでフェイルオーバー設定 その4:S3とBlobにGitHubActions使ってコンテンツ同期 その5:TerraformでIaC化 ◆Version関連 Ubuntu20.04LTS Client: Docker Engine - Community Version: 19.03.13 docker-compose version 1.24.0, build 0aa59064 Terraform v1.2.2 ◆事前準備 #Azureコンテナ起動 $ docker container run --name azure-terraform-dev -h \ terraform-dev -it -d \ --mount type=bind,src=$(pwd)/aws_azure,dst=/aws_azure \ --restart=always \ -e TZ=Asia/Tokyo multicloud-ubuntu /bin/bash $ docker exec -it azure-terraform-dev /bin/bash #1.AWS認証情報設定 # aws configure AWS Access Key ID [None]: YOURACCESSKEY AWS Secr...