GAS × LastPassAPI スプレッドシートにLastPassに格納されている情報を書き込みたい その2 HTTPリクエスト
前回
GASコード
情報を得たいので、APIを叩くってやつをやりたい訳です。
GASのコードとしては、結果としては下記のようなもので getsfdata のレスポンスは得ることができています。
function test_getsfdata() {
const url = 'https://lastpass.com/enterpriseapi.php';
const scriptProperties = PropertiesService.getScriptProperties();
const cid = scriptProperties.getProperty('AccountNumber');
const provhash = scriptProperties.getProperty('ProvisioningHash');
const options = {
"method": "POST",
"header": { "Content-Type": "application/json", },
"payload": {
"cid": cid,
"provhash": provhash,
"cmd": "getsfdata",//getdetailedsfdata だと 429エラー。 "getuserdata", "getsfdata"は通る
"data": "all"
}
}
const response = UrlFetchApp.fetch(url, options);
console.log(`response: ${response}`);
const obj = JSON.parse(response);
console.log(obj);
}
しかし、わからないのはコマンド(cmd)をgetdetailedsfdata にすると、
一発で 429 Too Many Requestsエラーが返ってくるのです。
どういうことなんだ。
上記は結果としてシンプルなコードになりました。しかし、当初はgetdetailedsfdataで試みていたので、なぜ通らないのか、GASコードを色々と弄っていました。その痕跡↓
// const auth =
// {
// "type": "noauth"
// }
// const headers =
// {
// "Content-Type": "application/json",
// }
// const payload = {
// "cid": cid,
// "provhash": provhash,
// "cmd": "getdetailedsfdata",
// "data": "all"
// }
// const raw = {
// "cid": cid,
// "provhash": provhash,
// "cmd": "getsfdata",
// "data": "all"
// }
// const payload = {
// "mode": "raw",
// "raw": JSON.stringify(raw),
// "options": {
// "raw": {
// "language": "json"
// }
// }
// }
参考
methodがGETでないのが不思議な気もしますが、公式にPOSTにせよと書いてあります。この辺りのことは管理コンソール>Advanced>Enterprise API から確認できます。
補足
プロパティはコード書いて格納するか、下図のようにGASのエディタから編集してください。cid(AccountNumber)は公式のヘルプを参照してください。
Where can I find the CID (account number) and API secret?
curl
curlが使えると良さそうなのですが、自分は詳しくありません。
下記の記事をみて、東京の天気予報はゲットできましが、その先どうすっか。
https://aprico-media.com/posts/8236
WindowsでBOXのCLIをどうにかした時のコマンドと似ているような気はします。
Postman
使えるようになると良さそうですが、これも自分は詳しくありません。
Use the LastPass Enterprise API Postman Collection
https://support.lastpass.com/help/use-the-lastpass-enterprise-api-postman-collection
謝辞
本件にあたっては、 Shinji(@sakichi01_)さんに大変お世話になりました。
深く感謝申し上げます。
ありがとうございます!!!!!!
一連のツイート、スレッドはこちら
続き
#GAS
#API
#パスワード管理
#json
#httpリクエスト
#LastPass
#curl
#Postman