コマンドを忘れた
Get-Command
コマンドレッドのヘルプを表示する
Get-help
オブジェクトの構造を表示する
Get-member
#パイプで受けることも可能
dir C:\Work | Get-Member
オブジェクトの型を表示する
$obj.GetType()
Get-Command
Get-help
Get-member
#パイプで受けることも可能
dir C:\Work | Get-Member
$obj.GetType()
$response = Invoke-WebRequest "取得したいサイトのURL"
※IEエンジンを使用するためInvoke-WebRequestコマンドレットを使用するには過去に最低1回はIEを起動させていないとエラーになる。
$response.Content
$response.ParsedHtml.IHTMLDocument3_getElementsByTagName("タグ名")
※getElementsByNameでも取得できるが、HRESULT からの例外エラーになる場合があった。
$response.ParsedHtml.getElementsByClassName("クラス名")
※こちらもHRESULT からの例外エラーになる場合があった。
$response = Invoke-WebRequest "https://stocks.finance.yahoo.co.jp/stocks/detail/?code=4689.T"
$price=$response.ParsedHtml.IHTMLDocument3_getElementsByTagName("TD") | Where-Object {($_.className -eq "stoksPrice")}
$price.innerText
文字化けしてしまうが、とりあえず取得は出来た。
$response = Invoke-WebRequest "http://kakaku.com/pc/hdd-35inch/"
$ranking=$response.ParsedHtml.getElementsbyClassname("pmItemRank aMerge")
#改行で区切って配列にする
$tb= $ranking.item().innertext.split("`n")
詳細は以下ヘルプサイト
File Manager API について
ライブドアブログで複数のファイルをまとめてアップロードしたい場合、Webの管理画面からでは1ファイルずつしかファイルを選択出来ないため、File Manager APIを利用したファイルアップロードの方法をメモ。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install curl
ブログ設定
-API Key
から
ルートエンドポイント
(curl -X POST https://livedoor.blogcms.jp/blog/自身のブログ名/file_manager/)
File Manager用パスワード
を控える
curl -X POST https://livedoor.blogcms.jp/blog/ブログ名/file_manager/list -H 'Expect:' -H 'X-LDBlog-Token:File Managery用パスワード'
id
を控える{"name":"ディレクトリ名","is_dir":1,"id":"0000","is_file":0,"is_root":0}
-F dir_id
ディレクトリID
curl -X POST https://livedoor.blogcms.jp/blog/ブログ名/file_manager/list -H 'Expect:' -H 'X-LDBlog-Token:File Managery用パスワード' -F 'dir_id=0000'
以下目的のディレクトリIDが取得できるまで繰り返す。
-F 'name='
ディレクトリ名-F 'dir_id='
ディレクトリID
curl -X POST https://livedoor.blogcms.jp/blog/ブログ名/file_manager/create_dir -H 'Expect:' -H 'X-LDBlog-Token:File Managery用パスワード' -F 'name=dir_name' -F 'dir_id=0000'
-F 'dir_id='
ディレクトリID-F 'name='
登録するファイル名(省略時はアップロードファイルと同名のファイル名になっていたが、ヘルプにはContent-Disposition filenameが使用されると記載があった。)-F 'upload_data=@/mnt/c/work/file.txt'
先頭に@を付けないとエラーになった。
multipart/form-data 形式で POSTするようにとの記載があったがよくわからない。
curl -X POST https://livedoor.blogcms.jp/blog/ブログ名/file_manager/upload -H 'Expect:' -H 'X-LDBlog-Token:File Managery用パスワード'-F 'dir_id=000' -F 'upload_data=@/mnt/c/work/00_blog/js/highlightjs/styles/agate.css'
あとはアップロードファイルを1か所にまとめてbashコマンドで処理してやれば良い
find /mnt/c/work/ | xargs -I% curl -X POST https://livedoor.blogcms.jp/blog/ブログ名/file_manager/upload -H 'Expect:' -H 'X-LDBlog-Token:File Managery用パスワード'-F 'dir_id=000' -F 'upload_data=@%'
Get-ScheduledTask
New-ScheduledTaskTrigger
コマンドレットNew-ScheduledTaskAction
コマンドレットRegister-ScheduledTask
コマンドレットNew-ScheduledTaskTrigger -daily -at "08:00:00"
New-ScheduledTaskTrigger -Once -At "2018/09/01 00:00:00"
New-ScheduledTaskTrigger -AtLogon
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-Command write-host hello"
※コマンドプロンプトを実行したい場合は"PowerShell.exe"を"cmd.exe"に書き換える。
また、バッチファイル等も指定可能。
New-ScheduledTaskTriggerで作成した条件とNew-ScheduledTaskActionで作成したアクションを組み合わせてスケジュール登録を行う
$trigger = New-ScheduledTaskTrigger -Once -At "20:45"
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-Command write-host hello
Read-Host `"続けるには Enter キーを押してください`""
Register-ScheduledTask -TaskName "Task_Hello" -Trigger $trigger -Action $action
一度登録したタスクを更新する場合は -Force
オプションをつけることでタスクの上書きが可能。
$trigger = New-ScheduledTaskTrigger -Once -At "18:55"
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-Command write-host hello
Read-Host `"Enter キーを押してください`""
Set-ScheduledTask -TaskName "Task_Hello" -Trigger $trigger -Action $action
Unregister-ScheduledTask -TaskName "Task_Hello"
Enable-ScheduledTask
Disable-ScheduledTask
Start-ScheduledTask
Stop-ScheduledTask
Enable-ScheduledTask -TaskName "Task_Hello"
Disable-ScheduledTask -TaskName "Task_Hello"
Start-ScheduledTask -TaskName "Task_Hello"
Stop-ScheduledTask -TaskName "Task_Hello"
そんなに複雑なプログラムは書けないのでブラウザ上のエディタで特に不便は感じていないが手順だけメモしておく
https://script.google.com/home/usersettings
上記URLにアクセスし、Google Apps Svript APIの設定を
オンにしておく。
コマンドプロンプト上で以下を入力
npm install -g @google/clasp
Googleアカウントにログイン
clasp login
ブラウザが起動してGoogleへのログイン画面が表示されるので自分が使用するユーザでログインする
mkdir c:\GAS\GAS_Project
cd c:\GAS\GAS_Project
clasp create GAS_Project
.clasp.jsonとappsscript.jsonの2つのファイルが作成される。 また、Apps Scriptのページにプロジェクトが作成される
既に作成済のプロジェクトをローカルで編集する場合はclone
機能を使う。
clasp clone [スクリプトID]
スクリプトIDは対象のプロジェクトページメニュー項目から
[ファイル]-[プロジェクトのプロパティ]-[情報タブ]
スクリプトID欄から取得出来る。
クローン作成時にコードがダウンロードされない場合や、
Webでコードを追加・編集した場合は以下のコマンドでコードを取得する。
プロジェクトを作成したフォルダで実行する。
clasp pull
コードは拡張子'.js'でダウンロードされる。
プロジェクトを作成したフォルダで実行する。
clasp push
以下のコマンドでブラウザのスクリプトエディタが起動する。
clasp open
VSCode上で[表示]-[ターミナル]
からターミナルを表示させれば、VSCodeのみでプロジェクトやクローンの作成を行うことが出来る。
デフォルトのターミナルはPowewrShellになっていたので
[ファイル]-[基本設定]-[設定]
'ユーザー設定'欄に以下の記述を加え、ターミナルをコマンドプロンプトに変更した。
"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe"
参考にしたサイト