{"id":464,"date":"2026-09-11T14:52:43","date_gmt":"2026-09-11T05:52:43","guid":{"rendered":"https:\/\/miginihitsuji.com\/prog\/?p=464"},"modified":"2026-09-11T14:52:44","modified_gmt":"2026-09-11T05:52:44","slug":"googlesheets-api-nextjs","status":"publish","type":"post","link":"https:\/\/miginihitsuji.com\/prog\/googlesheets-api-nextjs\/","title":{"rendered":"Google\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u99c6\u52d5\u306e\u304a\u77e5\u3089\u305b\u6a5f\u80fd\u3060\u3051\u3092\u642d\u8f09\u3057\u305f\u30b5\u30a4\u30c8\u958b\u767a"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u66f4\u65b0\u983b\u5ea6\u304c\u4f4e\u3044\u5c0f\u898f\u6a21\u306aWeb\u30b5\u30a4\u30c8\u306b\u306fWordPress\u3060\u3068\u30aa\u30fc\u30d0\u30fc\u30b9\u30da\u30c3\u30af\u306b&#8230;\u307e\u305f\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u3088\u3063\u3066\u306fWordPress\u7ba1\u7406\u753b\u9762\u3067\u306e\u64cd\u4f5c\u304c\u30cf\u30fc\u30c9\u30eb\u306b\u306a\u3063\u3066\u3057\u307e\u3046&#8230;\u306a\u3093\u3066\u3053\u3068\u304c\u3042\u3063\u305f\u306e\u3067\u3001\u304a\u77e5\u3089\u305b\u6a5f\u80fd\u306a\u3069\u8efd\u3044\u66f4\u65b0\u4f5c\u696d\u3060\u3051\u3092\u4f7f\u3044\u6163\u308c\u305fGoolge\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3067\u5b8c\u7d50\u3055\u305b\u308b\u69cb\u6210\u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u6210<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\uff1aGoogle Apps Script (GAS) \u3092Web App\u5316\u3057\u3001\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306e\u5185\u5bb9\u3092JSON\u3067\u8fd4\u3059API\u306b\u3059\u308b<\/li>\n\n\n\n<li>\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\uff1aNext.js\uff08App Router\uff09<\/li>\n\n\n\n<li>\u672c\u756a\u74b0\u5883\uff1aNode.js\u304c\u52d5\u304b\u306a\u3044\u5171\u6709\u30b5\u30fc\u30d0\u30fc\u3092\u60f3\u5b9a<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u8a18\u306e\u3088\u3046\u306a\u5171\u6709\u30b5\u30fc\u30d0\u30fc\u3060\u3068\u60f3\u5b9a\u3057\u3001Next.js\u306f\u9759\u7684\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u4e00\u629e\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u6210<\/h3>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism off-numbers lang-plain\"><code>gsheets-nextjs-site\/\n\u251c\u2500\u2500 clasp\/    # GAS\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\n\u2502   \u2514\u2500\u2500 src\/\n\u2514\u2500\u2500 nextjs\/   # \u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">GAS\u5074\uff1a\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3092JSON API\u306b\u3059\u308b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3092\u6e96\u5099\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism off-numbers lang-plain\"><code>date | title | body<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d8\u30c3\u30c0\u30fc\u884c\uff081\u884c\u76ee\uff09\u306e\u5024\u3092\u305d\u306e\u307e\u307eJSON\u306e\u30ad\u30fc\u3068\u3057\u305f\u3044\u306e\u3067\u3001\u30d8\u30c3\u30c0\u30fc\u306f\u82f1\u8a9e\u8868\u8a18\u3067\u7d71\u4e00\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u969b\u306e\u904b\u7528\u3092\u8003\u3048\u308b\u3068\u3001\u516c\u958b\u30b9\u30c6\u30fc\u30bf\u30b9\uff08pulished\uff09\u306a\u3069\u3042\u3063\u305f\u65b9\u304c\u826f\u3044\u3068\u601d\u3044\u307e\u3059\u304c\u3001\u4eca\u56de\u306f\u3072\u3068\u307e\u305a\u306e\u8868\u793a\u3092\u76ee\u6307\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">clasp\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">clasp\u306fCommand Line Apps Script Projects\u306e\u7565\u3067\u3001Google\u304c\u516c\u5f0f\u3067\u63d0\u4f9b\u3057\u3066\u3044\u308bCLI\u30c4\u30fc\u30eb\u3067\u3059\u3002GAS\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30ed\u30fc\u30ab\u30eb\u3067\u4f5c\u6210\u3001\u7de8\u96c6\u3001\u30c7\u30d7\u30ed\u30a4\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002PC\u306b1\u56de\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308c\u3070\u3088\u3044\u30b0\u30ed\u30fc\u30d0\u30eb\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code># clasp\u304c\u521d\u3081\u3066\u306e\u74b0\u5883\u30671\u56de\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\nnpm install -g @google\/clasp\nclasp login\n\n# \u4ee5\u4e0b\u3067\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u8868\u793a\u3055\u308c\u308c\u3070\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u3067\u3059\nclasp -v<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u65b0\u898f\u4f5c\u6210\u3057\u307e\u3059<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cd clasp\nclasp create --type webapp --title my-gsheets-api --rootDir .\/src<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3092JSON\u3067\u8fd4\u3059<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"swl-bg-color has-swl-pale-01-background-color\"><span class=\"swl-inline-color has-swl-deep-01-color\">clasp\/src\/main.js<\/span><\/span>\uff08\u3053\u308c\u304cAPI\u672c\u4f53\u3067\u3059\uff09<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>function doGet(e) {\n  const sheet = SpreadsheetApp.openById(&#39;\u30b7\u30fc\u30c8ID&#39;).getSheetByName(&#39;news&#39;);\n  const values = sheet.getDataRange().getValues();\n  const [header, ...rows] = values;\n\n  const data = rows.map((row) =&gt;\n    Object.fromEntries(header.map((key, i) =&gt; [key, row[i]]))\n  );\n\n  return ContentService\n    .createTextOutput(JSON.stringify(data))\n    .setMimeType(ContentService.MimeType.JSON);\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b7\u30fc\u30c8ID\u306fGoogle\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306eURL\u304b\u3089\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u30b7\u30fc\u30c8\u540d\u3092\u300cnews\u300d\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u3067Google\u5074\u306b\u53cd\u6620<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism off-numbers lang-bash\" data-lang=\"Bash\"><code>clasp push<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">\u30c7\u30d7\u30ed\u30a4\u3068\u6a29\u9650\u627f\u8a8d<\/h3>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>clasp deploy --description &quot;v1&quot;\nclasp deployments<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u300cv1\u300d\u3067\u30c7\u30d7\u30ed\u30a4\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u767a\u884c\u3055\u308c\u305fWeb App\u306eURL\u306b\u521d\u3081\u3066\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u300c\u3053\u306e\u30a2\u30d7\u30ea\u304c\u3042\u306a\u305f\u306e\u30c7\u30fc\u30bf\u3078\u306e\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u3092\u6c42\u3081\u3066\u3044\u307e\u3059\u300d\u3068\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u3001\u8a31\u53ef\u3057\u307e\u3059\u3002\u4ee5\u964d\u306fJSON\u304c\u8fd4\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u5074\uff1aNext.js<\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>npx create-next-app@latest nextjs --typescript --app --eslint<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"swl-bg-color has-swl-pale-01-background-color\"><span class=\"swl-inline-color has-swl-deep-01-color\">next.config.ts<\/span><\/span>\u3067\u9759\u7684\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3092\u6709\u52b9\u306b\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-ts\" data-lang=\"TypeScript\"><code>import type { NextConfig } from &#39;next&#39;;\n\nconst nextConfig: NextConfig = {\n  output: &#39;export&#39;,\n  images: {\n    unoptimized: true,\n  },\n  trailingSlash: true,\n};\n\nexport default nextConfig;<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">GAS\u306eURL\u3092<span class=\"swl-bg-color has-swl-pale-01-background-color\"><span class=\"swl-inline-color has-swl-deep-01-color\">.env.local<\/span><\/span>\u306b\u3002Apps Script\u306e<strong>[\u30c7\u30d7\u30ed\u30a4\u3092\u7ba1\u7406]<\/strong>\u304b\u3089\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>GAS_API_URL=https:\/\/script.google.com\/macros\/s\/xxxxx\/exec<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u304a\u77e5\u3089\u305b\u4e00\u89a7\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<span class=\"swl-bg-color has-swl-pale-01-background-color\"><span class=\"swl-inline-color has-swl-deep-01-color\">app\/news\/page.tsx<\/span><\/span> \u3092\u7528\u610f\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-ts\" data-lang=\"TypeScript\"><code>type NewsItem = {\n  title: string;\n  date: string;\n  body: string;\n};\n\nasync function getNews(): Promise&lt;NewsItem[]&gt; {\n  const res = await fetch(process.env.GAS_API_URL!);\n  return res.json();\n}\n\nexport default async function NewsPage() {\n  const news = await getNews();\n\n  return (\n    &lt;ul&gt;\n      {news.map((item, i) =&gt; (\n        &lt;li key={i}&gt;{item.date} {item.title}&lt;\/li&gt;\n      ))}\n    &lt;\/ul&gt;\n  );\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ed\u30fc\u30ab\u30eb\u3067\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cd nextjs\nnpm run dev<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"swl-bg-color has-swl-pale-01-background-color\"><span class=\"swl-inline-color has-swl-deep-01-color\">http:\/\/localhost:3000\/news<\/span><\/span> \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3001\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306e\u304a\u77e5\u3089\u305b\u304c\u8868\u793a\u3055\u308c\u308c\u3070\u6210\u529f\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u304a\u307e\u3051<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c0f\u898f\u6a21\u306aWeb\u30b5\u30a4\u30c8\u306e\u5834\u5408\u3001Node.js\u304c\u52d5\u304b\u306a\u3044\u5171\u6709\u30b5\u30fc\u30d0\u30fc\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u60f3\u5b9a\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u306a\u306e\u3067\u3001Next.js\u306f\u9759\u7684\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3092\u30c7\u30d7\u30ed\u30a4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001<span class=\"swl-bg-color has-swl-pale-01-background-color\"><span class=\"swl-inline-color has-swl-deep-01-color\">output: &#8216;export&#8217;<\/span><\/span>\u3092\u6709\u52b9\u306b\u3057\u307e\u3057\u305f\u304c\u3001\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3092\u66f4\u65b0\u3057\u305f\u3060\u3051\u3067\u306f\u30b5\u30a4\u30c8\u306e\u8868\u793a\u306f\u5909\u308f\u3089\u305a\u3001\u518d\u30d3\u30eb\u30c9\u30fb\u518d\u30c7\u30d7\u30ed\u30a4\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3064\u307e\u308a\u3001\u3053\u306e\u307e\u307e\u3060\u3068\u3001\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3092\u66f4\u65b0\u3059\u308b\u305f\u3073\u306b\u624b\u52d5\u3067 <span class=\"swl-bg-color has-swl-pale-01-background-color\"><span class=\"swl-inline-color has-swl-deep-01-color\">npm run build<\/span><\/span> \u3092\u3057\u3066\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u975e\u73fe\u5b9f\u7684\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u3053\u3067\u3001\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306b\u66f4\u65b0\u3092\u53cd\u6620\u3059\u308b\u30c8\u30ea\u30ac\u30fc\u3092\u7528\u610f\u3057\u3066\u306f\u3069\u3046\u304b\u3068\u8003\u3048\u3066\u307f\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u304b\u3089\u30c8\u30ea\u30ac\u30fc\u3092\u9001\u308a\u3001\u30d3\u30eb\u30c9\u30fb\u30c7\u30d7\u30ed\u30a4\u3092\u81ea\u52d5\u5316\u3059\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism off-numbers lang-plain\"><code>\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306e\u300c\u53cd\u6620\u3059\u308b\u300d\u30e1\u30cb\u30e5\u30fc\n\u2193\nGAS\u304cGitHub Actions\u306b\u300c\u5b9f\u884c\u3057\u3066\u300d\u3068API\u7d4c\u7531\u3067\u901a\u77e5\uff08repository_dispatch\uff09\n\u2193\nGitHub Actions\u4e0a\u3067Next.js\u3092\u30d3\u30eb\u30c9\n\u2193\n\u30b5\u30fc\u30d0\u30fc\u3078SSH\u7d4c\u7531\uff08rsync\uff09\u3067\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">GAS\u306b\u300c\u53cd\u6620\u3059\u308b\u300d\u30e1\u30cb\u30e5\u30fc\u3092\u8ffd\u52a0\u3057\u3001\u305d\u308c\u304c\u30c8\u30ea\u30ac\u30fc\u3068\u306a\u308a\u3001GitHub Actions\u304c\u30d3\u30eb\u30c9\u3068\u30c7\u30d7\u30ed\u30a4\u3092\u62c5\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3046\u3059\u308c\u3070\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3092\u7de8\u96c6\u3057\u3066\u3001\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u53cd\u6620\u3059\u308b\u3092\u62bc\u3059\u3060\u3051\u3067\u304a\u77e5\u3089\u305b\u3092\u516c\u958b\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u66f4\u65b0\u983b\u5ea6\u304c\u4f4e\u3044\u5c0f\u898f\u6a21\u306aWeb\u30b5\u30a4\u30c8\u306b\u306fWordPress\u3060\u3068\u30aa\u30fc\u30d0\u30fc\u30b9\u30da\u30c3\u30af\u306b&#8230;\u307e\u305f\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u3088\u3063\u3066\u306fWordPress\u7ba1\u7406\u753b\u9762\u3067\u306e\u64cd\u4f5c\u304c\u30cf\u30fc\u30c9\u30eb\u306b\u306a\u3063\u3066\u3057\u307e\u3046&#8230;\u306a\u3093\u3066\u3053\u3068\u304c\u3042\u3063\u305f\u306e\u3067\u3001\u304a\u77e5 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":472,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","footnotes":""},"categories":[24],"tags":[42],"class_list":["post-464","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev-env","tag-next-js"],"_links":{"self":[{"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/posts\/464","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/comments?post=464"}],"version-history":[{"count":6,"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/posts\/464\/revisions"}],"predecessor-version":[{"id":470,"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/posts\/464\/revisions\/470"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/media\/472"}],"wp:attachment":[{"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/media?parent=464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/categories?post=464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/miginihitsuji.com\/prog\/wp-json\/wp\/v2\/tags?post=464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}