見出し画像

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の内容をアップデートしたり、編集したりすることで解決したほうがよい気もします。とはいえ、一旦解決できたので、備忘録として残しておきます。


いいなと思ったら応援しよう!