Notionで書籍管理するための登録用アプリをAppSheetで作りたい #3

前 : Notionで書籍管理するための登録用アプリをAppSheetで作りたい #2
次 : Notionで書籍管理するための登録用アプリをAppSheetで作りたい #4

今回の目標

一般公開している書籍情報取得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を更新することで値を反映するのか?

そこはこの後調べよう。

この記事が気に入ったらサポートをしてみませんか?