Notionで書籍管理するための登録用アプリをAppSheetで作りたい #3
今回の目標
一般公開している書籍情報取得APIを使い、ISBNから必要情報を取得する。
今回はAppSheetからではなく、GASから直接 書籍情報を取得する。
※今調べたところだと、AppSheetから外部APIを叩くためにはGASを使うっぽいので、まずはGASから書籍取得APIを呼び出してみる
書籍取得API
書籍取得APIって色々なところが公開しているのね。
今回はとりあえずOpenDBが使いやすそうなので、そちらから攻めて見ることにする。
OpenDB
APIをテスト実行
ひとまずTalentで必要情報が取得できるか確認
OpenDBはAPI Keyが要らないことも特徴のようで、ISBNだけをパラメータに指定すれば一通り必要な情報が取得できそう。
次にGASで実行
Talentに試したことを そのままGASで記載。
結果はConsoleに表示。
これも問題なく成功。
function myFunction() {
console.log(fetch_oepndb(`9784062189446`));
}
const fetch_oepndb = (isbn) => {
const response = UrlFetchApp.fetch(`https://api.openbd.jp/v1/get?isbn=${isbn}`)
return JSON.parse(response)
}
画像をダウンロードして指定のフォルダに保存
先程のGASにdownload_jpg 関数を追加。
最初 json から jpg のURLを取得するのに苦労したが、なんとか取得。
あとfolder_id がパッと見分からなかったが、こういうときは だいたい フォルダのファイルパスを見ればいいと覚えているので、難なく取得。
//画像のダウンロード先
file_saveas = 'https://drive.google.com/drive/folders/{folder_id}'
//レコード登録用 相対パス
folder_saveas_id = '{foledr_id}';
function myFunction() {
json = fetch_oepndb(`9784062189446`);
download_jpg(json[0]['summary'].cover)
}
const fetch_oepndb = (isbn) => {
const response = UrlFetchApp.fetch(`https://api.openbd.jp/v1/get?isbn=${isbn}`).getContentText();
return JSON.parse(response)
}
const download_jpg = (imageUrl) => {
console.log(imageUrl)
const folder = DriveApp.getFolderById(folder_saveas_id);
const image = UrlFetchApp.fetch(imageUrl).getBlob();
folder.createFile(image);
}
今日はここまで。
次の予定
今日作ったGASを AppSheetに反映したい。
これどうやるんだろう?ISBNを取得したら GASを呼び出して、AppSheetのフィールドに値を入れるのか?
それとも、元データのカラムにGASで取得したデータを登録して、AppSheetのUIを更新することで値を反映するのか?
そこはこの後調べよう。
この記事が気に入ったらサポートをしてみませんか?