PowerShellでGoogleCalendarAPIを叩こうとして躓いた話。
はじめに
この記事は備忘録なので、あまり参考にならないかもしれません。
そもそもコチラの記事を参考にしているので、詳細が知りたい方はリンク先を読んでください。
PowerShellでGoogle APIを使ってGoolgeカレンダーを操作する
https://www.tekizai.net/entry/googlecalendar_powershell_1
また、GoogleAPIの有効化やCredentialのダウンロード等は割愛します。というかGoogleの公式ドキュメントが優秀過ぎるので、そっちを見た方が良い。
なんでPowerShell?
PowerShellしか使えない環境がこの世にある限り、血の涙を流しながらPowerShellを書いている人だってこの世にはいるんです。ほかの言語を使えば簡単にできるのは知っているんです。愚痴っても仕方ないので、頑張ってPowerShellでGoogleCalendarAPIを叩いてみようと思います。
GoogleAPI用のdllという謎テクノロジーを利用するにあたって、パッケージマネージャで躓いた
Nugetなるパッケージマネージャを利用するとのこと。どうでもいいけど読み方はナゲットでいいのかな?ニュゲット?
参考にしたページのとおり、こんな感じでインストールコマンドを実行してみますが、
$dir = "任意のディレクトリ"
Install-Package Newtonsoft.Json -Source nuget -Scope CurrentUser -SkipDependencies -Destination $dir -RequiredVersion "12.0.3"
なんとエラー。困った。困ったときはエラーログを見よう。
Install-Package : パッケージ ソース 'nuget' が見つかりません。利用できるすべてのパッケージ ソースを確認するには、Get-PackageSource を使用してください。
なるほど。Get-PackageSourceでパッケージソースがあるか確認しろって話ね。
Get-PackageSource
Name ProviderName IsTrusted Location
---- ------------ --------- --------
nuget.org NuGet False https://api.nuget.org/v3/index.json
PSGallery PowerShellGet False https://www.powershellgallery.com/api/v2
いやNuGetおるがな・・・
Install-Packageを成功させるには
素直にSourceにURLを突っ込みました。とはいえ、Get-PackageSourceのLocationで表示されるURLだとエラーになってしまいます。
Get-PackageSource
Name ProviderName IsTrusted Location
---- ------------ --------- --------
nuget.org NuGet False https://api.nuget.org/v3/index.json
LocationURLではなく、https://www.nuget.org/api/v2 を利用します。
Install-Package Newtonsoft.Json -Source "https://www.nuget.org/api/v2" -Scope CurrentUser -SkipDependencies -Destination $dir -RequiredVersion "12.0.3"
Name Version Source Summary
---- ------- ------ -------
Newtonsoft.Json 12.0.3 https://www.nuget.org/api/v2 Json.NET is a popular high-performance JSON framework for .NET
できた!
あとは参考ページをもとにいろいろ叩いてみればOK!
おわりに
本質的には、SourceにURLを指定するのではなく、たぶんPackageSourceの内容をアップデートしたり、編集したりすることで解決したほうがよい気もします。とはいえ、一旦解決できたので、備忘録として残しておきます。