{"id":736,"date":"2025-07-30T22:42:38","date_gmt":"2025-07-30T13:42:38","guid":{"rendered":"https:\/\/cg-method.com\/figma\/?p=736"},"modified":"2026-09-20T13:15:59","modified_gmt":"2026-09-20T04:15:59","slug":"figma-plugin-external-style-audit-csv","status":"publish","type":"post","link":"https:\/\/cg-method.com\/figma\/figma-plugin-external-style-audit-csv\/","title":{"rendered":"Figma\u30d7\u30e9\u30b0\u30a4\u30f3\u2502\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u53c2\u7167\u3092\u4e00\u62ec\u691c\u51fa\u3057\u3066CSV\u51fa\u529b\u3059\u308b"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Figma\u30d5\u30a1\u30a4\u30eb\u5185\u3067\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u3044\u308b\u30ec\u30a4\u30e4\u30fc\u3092\u3001\u4e00\u62ec\u3067\u691c\u51fa\u3057\u3066CSV\u5f62\u5f0f\u3067\u66f8\u304d\u51fa\u3059\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u5b9f\u88c5\u624b\u9806\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list is-style-num_circle\">\n<li>\u30c7\u30b6\u30a4\u30f3\u30b7\u30b9\u30c6\u30e0\u306e\u904b\u7528\u4e2d\u306b\u3001\u610f\u56f3\u3057\u306a\u3044\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u306e\u6df7\u5165\u3092\u691c\u51fa\u3057\u305f\u3044<\/li>\n\n\n\n<li>\u30ea\u30f3\u30af\u5207\u308c\u3084\u4e0d\u8981\u306a\u5916\u90e8\u4f9d\u5b58\u306e\u539f\u56e0\u3068\u306a\u3063\u3066\u3044\u308b\u7b87\u6240\u3092\u7279\u5b9a\u3057\u305f\u3044<\/li>\n\n\n\n<li>\u30c7\u30b6\u30a4\u30f3\u306e\u6574\u5408\u6027\u7dad\u6301\u3084\u4fdd\u5b88\u904b\u7528\u306e\u305f\u3081\u306b\u76e3\u67fb\u30ed\u30b0\u3092\u6b8b\u3057\u305f\u3044<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u624b\u52d5\u306e\u76ee\u8996\u78ba\u8a8d\u306b\u306f\u591a\u304f\u306e\u5de5\u6570\u304c\u304b\u304b\u308b\u305f\u3081\u3001\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u7528\u3044\u3066\u5168\u30ec\u30a4\u30e4\u30fc\u3092\u81ea\u52d5\u3067\u8d70\u67fb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"378\" height=\"229\" src=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h59_04.png\" alt=\"\u5168\u30ec\u30a4\u30e4\u30fc\u3092\u81ea\u52d5\u8d70\u67fb\u3057\u3066\u5f97\u3089\u308c\u305f\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u53c2\u7167\u306e\u51fa\u529b\u7d50\u679c\u306e\u4f8b\u3002\" class=\"wp-image-738\" srcset=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h59_04.png 378w, https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h59_04-300x182.png 300w\" sizes=\"(max-width: 378px) 100vw, 378px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u51fa\u529b\u7d50\u679c\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-border\"><img decoding=\"async\" width=\"855\" height=\"327\" src=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h57_34.png\" alt=\"\u53d6\u5f97\u3067\u304d\u306a\u3044\u5834\u5408\u306b\u4e0d\u660e\u3068\u8868\u793a\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308b\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u53c2\u7167\u306e\u51fa\u529b\u7d50\u679c\u306e\u4f8b\u3002\" class=\"wp-image-737\" srcset=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h57_34.png 855w, https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h57_34-300x115.png 300w, https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h57_34-768x294.png 768w\" sizes=\"(max-width: 855px) 100vw, 855px\" \/><\/figure>\n\n\n\n<p class=\"is-style-icon_pen wp-block-paragraph\">Figma API\u306e\u5236\u7d04\u306b\u3088\u308aLibrary Name\u306e\u76f4\u63a5\u53d6\u5f97\u304c\u96e3\u3057\u3044\u305f\u3081\u3001\u53d6\u5f97\u3067\u304d\u306a\u3044\u30b1\u30fc\u30b9\u3067\u306f\u300c\u4e0d\u660e\u300d\u3068\u8868\u793a\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u53c2\u7167\u3092\u4e00\u62ec\u691c\u51fa\u3057\u3066CSV\u51fa\u529b\u3059\u308b\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u4ed5\u7d44\u307f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ed\u30fc\u30ab\u30eb\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u306a\u3044\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u304c\u9069\u7528\u3055\u308c\u3066\u3044\u308b\u30ec\u30a4\u30e4\u30fc\u3092\u3001\u30d5\u30a1\u30a4\u30eb\u5185\u304b\u3089\u8d70\u67fb\u3057\u3066\u691c\u51fa\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"378\" height=\"229\" src=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h59_04.png\" alt=\"\u30ed\u30fc\u30ab\u30eb\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u306a\u3044\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u304c\u9069\u7528\u3055\u308c\u305f\u30ec\u30a4\u30e4\u30fc\u3092\u8d70\u67fb\u30fb\u691c\u51fa\u3059\u308b\u4ed5\u7d44\u307f\u306e\u30a4\u30e1\u30fc\u30b8\u3002\" class=\"wp-image-738\" srcset=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h59_04.png 378w, https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h59_04-300x182.png 300w\" sizes=\"(max-width: 378px) 100vw, 378px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u51e6\u7406\u624b\u9806\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list is-style-num_circle\">\n<li>\u30ed\u30fc\u30ab\u30eb\u306b\u5b58\u5728\u3059\u308b\u3059\u3079\u3066\u306e\u30b9\u30bf\u30a4\u30ebID\u3092\u53d6\u5f97\u3057\u3066\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b<\/li>\n\n\n\n<li>\u5404\u30ec\u30a4\u30e4\u30fc\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30b9\u30bf\u30a4\u30ebID\u304c\u30ed\u30fc\u30ab\u30eb\u4e00\u89a7\u306b\u542b\u307e\u308c\u308b\u304b\u3092\u5224\u5b9a\u3059\u308b<\/li>\n\n\n\n<li>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5185\u306e\u30ce\u30fc\u30c9\u30c4\u30ea\u30fc\u3092\u6df1\u3055\u512a\u5148\u3067\u8d70\u67fb\u3059\u308b<\/li>\n\n\n\n<li>\u691c\u51fa\u3057\u305f\u30b9\u30bf\u30a4\u30eb\u60c5\u5831\u3092CSV\u5f62\u5f0f\u306b\u6574\u5f62\u3057\u3066UI\u5074\u3078\u9001\u4fe1\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u69cb\u6210\u3059\u308b\u5404\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30fc\u30c9\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ed\u30fc\u30ab\u30eb\u30b9\u30bf\u30a4\u30eb\u306e\u4e00\u89a7\u3092CSV\u5f62\u5f0f\u3067\u51fa\u529b\u3059\u308b\u65b9\u6cd5\u306f\u3001\u4ee5\u4e0b\u306e\u8a18\u4e8b\u3067\u89e3\u8aac\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n<div class=\"swell-block-postLink\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/09\/figma-style-export-csv-300x169.jpg\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/cg-method.com\/figma\/figma-style-export-csv\/\">Figma\u2502\u30b9\u30bf\u30a4\u30eb\u60c5\u5831\u4e00\u89a7\u3092\u51fa\u529b\u3059\u308b\u30d7\u30e9\u30b0\u30a4\u30f3<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">Figma\u3067\u5b9a\u7fa9\u3059\u308b\u30c6\u30ad\u30b9\u30c8\u30b9\u30bf\u30a4\u30eb\u3084\u30ab\u30e9\u30fc\u30b9\u30bf\u30a4\u30eb\u306f\u3001Web\u30b5\u30a4\u30c8\u306e\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3084Unity\u958b\u767a\u306a\u3069\u3001\u30c7\u30b6\u30a4\u30f3\u306e\u7d71\u4e00\u6027\u3092\u4fdd\u3064\u305f\u3081\u306b\u5e83\u304f\u53c2\u7167\u3055\u308c\u307e\u3059\u3002 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u898f\u6a21&#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\n<h3 class=\"wp-block-heading\">manifest.json<\/h3>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-json\" data-lang=\"JSON\"><code>{\n  &quot;name&quot;: &quot;\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u53c2\u7167\u3092\u8abf\u67fb&quot;,\n  &quot;id&quot;: &quot;check-external-styles&quot;,\n  &quot;api&quot;: &quot;1.0.0&quot;,\n  &quot;main&quot;: &quot;code.js&quot;,\n  &quot;ui&quot;: &quot;ui.html&quot;,\n  &quot;editorType&quot;: [&quot;figma&quot;],\n  &quot;permissions&quot;: [&quot;currentuser&quot;]\n}<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">code.js<\/h3>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>\/\/ \u30ed\u30fc\u30ab\u30eb\u30b9\u30bf\u30a4\u30ebID\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\uff08Paint \/ Effect \/ Text \/ Grid\uff09\nconst localStyleIds = new Set(\n  [\n    ...figma.getLocalPaintStyles(),\n    ...figma.getLocalEffectStyles(),\n    ...figma.getLocalTextStyles(),\n    ...figma.getLocalGridStyles(),\n  ].map((s) =&gt; s.id)\n);\n\nfunction isExternalStyle(style) {\n  return !!style && style.remote === true && !localStyleIds.has(style.id);\n}\n\nfunction checkExternalStyleUsage(node) {\n  const result = [];\n\n  function add(styleId, type) {\n    if (!styleId || typeof styleId !== &quot;string&quot;) return; \/\/ figma.mixed \u306f\u5f3e\u304f\n    const style = figma.getStyleById(styleId);\n    if (isExternalStyle(style)) {\n      result.push({\n        name: node.name,\n        id: &quot;&#39;&quot; + node.id, \/\/ Excel\u8aa4\u5909\u63db\u9632\u6b62\n        type,\n        styleName: style.name,\n        styleId: style.id,\n        libraryName: (style && style.libraryName) || &quot;\u4e0d\u660e&quot;,\n      });\n    }\n  }\n\n  try {\n    add(node.fillStyleId, &quot;Fill Style&quot;);\n  } catch (e) {}\n  try {\n    add(node.strokeStyleId, &quot;Stroke Style&quot;);\n  } catch (e) {}\n  try {\n    add(node.effectStyleId, &quot;Effect Style&quot;);\n  } catch (e) {}\n  if (&quot;textStyleId&quot; in node) {\n    try {\n      add(node.textStyleId, &quot;Text Style&quot;);\n    } catch (e) {}\n  }\n\n  return result;\n}\n\nfunction walk(node, acc) {\n  \/\/ SceneNode\u306e\u307f\u30c1\u30a7\u30c3\u30af\n  if (node && node.type && typeof node.type === &quot;string&quot;) {\n    try {\n      acc.push(...checkExternalStyleUsage(node));\n    } catch (e) {}\n  }\n  if (&quot;children&quot; in node && Array.isArray(node.children)) {\n    for (const child of node.children) {\n      walk(child, acc);\n    }\n  }\n}\n\nfunction getTimestamp() {\n  const now = new Date();\n  const yyyy = now.getFullYear();\n  const mm = String(now.getMonth() + 1).padStart(2, &quot;0&quot;);\n  const dd = String(now.getDate()).padStart(2, &quot;0&quot;);\n  const hh = String(now.getHours()).padStart(2, &quot;0&quot;);\n  const min = String(now.getMinutes()).padStart(2, &quot;0&quot;);\n  return `${yyyy}-${mm}-${dd}_${hh}${min}`;\n}\n\nfunction toCSV(rows) {\n  const headers = [\n    &quot;Layer Name&quot;,\n    &quot;Layer ID&quot;,\n    &quot;Style Type&quot;,\n    &quot;Style Name&quot;,\n    &quot;Style ID&quot;,\n    &quot;Library Name&quot;,\n  ];\n  const records = rows.map((r) =&gt; [\n    r.name,\n    r.id,\n    r.type,\n    r.styleName,\n    r.styleId,\n    r.libraryName,\n  ]);\n  return [headers, ...records]\n    .map((row) =&gt;\n      row.map((c) =&gt; `&quot;${String(c).replace(\/&quot;\/g, &#39;&quot;&quot;&#39;)}&quot;`).join(&quot;,&quot;)\n    )\n    .join(&quot;\\n&quot;);\n}\n\n\/\/ ---- UI\u3092\u8868\u793a\uff08\u5c0f\u3055\u3081\u306e\u30e2\u30fc\u30c0\u30eb\uff09 ----\nfigma.showUI(__html__, { width: 320, height: 160 });\n\nfigma.ui.onmessage = (msg) =&gt; {\n  if (!msg || typeof msg !== &quot;object&quot;) return;\n\n  if (msg.type === &quot;export&quot;) {\n    const allResults = [];\n\n    \/\/ \u30d5\u30a1\u30a4\u30eb\u5168\u4f53\uff1a\u5168\u30da\u30fc\u30b8\u3092\u8d77\u70b9\u306b\u518d\u5e30\u8d70\u67fb\n    for (const page of figma.root.children) {\n      if (page.type === &quot;PAGE&quot;) {\n        walk(page, allResults);\n      }\n    }\n\n    if (allResults.length === 0) {\n      figma.notify(\n        &quot;\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u3044\u308b\u30ec\u30a4\u30e4\u30fc\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002&quot;\n      );\n      figma.ui.postMessage({ type: &quot;error&quot;, message: &quot;\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u306a\u3057\u3002&quot; });\n      return;\n    }\n\n    const csv = toCSV(allResults);\n    const filename = `external_styles_${getTimestamp()}.csv`;\n    figma.ui.postMessage({ type: &quot;download&quot;, csv, filename });\n  }\n\n  if (msg.type === &quot;close&quot;) {\n    figma.closePlugin();\n  }\n};\n<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">ui.html<\/h3>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=&quot;ja&quot;&gt;\n  &lt;head&gt;\n    &lt;meta charset=&quot;utf-8&quot; \/&gt;\n    &lt;title&gt;\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u53c2\u7167\u3092\u8abf\u67fb&lt;\/title&gt;\n    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1&quot; \/&gt;\n    &lt;style&gt;\n      html,\n      body {\n        margin: 0;\n        padding: 0;\n        font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto,\n          &quot;Hiragino Kaku Gothic ProN&quot;, Meiryo, &quot;Noto Sans JP&quot;, Arial, sans-serif;\n        color: #111;\n        background: #fff;\n      }\n      .container {\n        padding: 16px;\n      }\n      h1 {\n        font-size: 14px;\n        margin: 0 0 6px;\n        font-weight: 700;\n      }\n      p {\n        font-size: 12px;\n        margin: 0 0 12px;\n        color: #555;\n      }\n      .actions {\n        display: flex;\n        align-items: center;\n        gap: 8px;\n      }\n      button {\n        appearance: none;\n        border: 1px solid #ccc;\n        background: #0b62ff;\n        color: #fff;\n        font-size: 13px;\n        padding: 8px 12px;\n        border-radius: 8px;\n        cursor: pointer;\n      }\n      button:disabled {\n        opacity: 0.6;\n        cursor: not-allowed;\n      }\n      .status {\n        font-size: 11px;\n        color: #666;\n      }\n    &lt;\/style&gt;\n  &lt;\/head&gt;\n  &lt;body&gt;\n    &lt;div class=&quot;container&quot; role=&quot;main&quot; aria-labelledby=&quot;title&quot;&gt;\n      &lt;h1 id=&quot;title&quot;&gt;\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u8abf\u67fb&lt;\/h1&gt;\n      &lt;p&gt;\u5168\u30da\u30fc\u30b8\u30fb\u5168\u30ec\u30a4\u30e4\u30fc\u3092\u8d70\u67fb\u3057\u3001\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u53c2\u7167\u3092CSV\u306b\u66f8\u304d\u51fa\u3057\u307e\u3059\u3002&lt;\/p&gt;\n      &lt;div class=&quot;actions&quot;&gt;\n        &lt;button id=&quot;run&quot; type=&quot;button&quot;&gt;\u5168\u4f53\u3092\u30b9\u30ad\u30e3\u30f3\u3057\u3066CSV\u51fa\u529b&lt;\/button&gt;\n        &lt;span\n          id=&quot;status&quot;\n          class=&quot;status&quot;\n          role=&quot;status&quot;\n          aria-live=&quot;polite&quot;\n        &gt;&lt;\/span&gt;\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n\n    &lt;script&gt;\n      let csv = &quot;&quot;,\n        filename = &quot;&quot;;\n      const runBtn = document.getElementById(&quot;run&quot;);\n      const statusEl = document.getElementById(&quot;status&quot;);\n\n      function setLoading(on, text) {\n        runBtn.disabled = !!on;\n        statusEl.textContent = text || &quot;&quot;;\n      }\n\n      function requestExport() {\n        if (runBtn.disabled) return;\n        setLoading(true, &quot;\u30d5\u30a1\u30a4\u30eb\u5168\u4f53\u3092\u8d70\u67fb\u4e2d\u2026&quot;);\n        parent.postMessage({ pluginMessage: { type: &quot;export&quot; } }, &quot;*&quot;);\n      }\n\n      runBtn.addEventListener(&quot;click&quot;, requestExport);\n\n      \/\/ Enter \u30ad\u30fc\u3067\u3082\u5b9f\u884c\n      window.addEventListener(&quot;keydown&quot;, (e) =&gt; {\n        if (e.key === &quot;Enter&quot;) {\n          e.preventDefault();\n          requestExport();\n        }\n      });\n\n      onmessage = (event) =&gt; {\n        const msg = event.data.pluginMessage;\n        if (!msg) return;\n\n        if (msg.type === &quot;download&quot;) {\n          csv = msg.csv;\n          filename = msg.filename;\n\n          try {\n            const blob = new Blob([csv], { type: &quot;text\/csv;charset=utf-8;&quot; });\n            const url = URL.createObjectURL(blob);\n            const a = document.createElement(&quot;a&quot;);\n            a.href = url;\n            a.download = filename;\n            document.body.appendChild(a);\n            a.click();\n            a.remove();\n            URL.revokeObjectURL(url);\n            setLoading(false, &quot;\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u5b8c\u4e86&quot;);\n          } catch (err) {\n            alert(&quot;\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002&quot;);\n            setLoading(false, &quot;&quot;);\n          } finally {\n            parent.postMessage({ pluginMessage: { type: &quot;close&quot; } }, &quot;*&quot;);\n          }\n        }\n\n        if (msg.type === &quot;error&quot;) {\n          setLoading(false, &quot;&quot;);\n          alert(msg.message || &quot;\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002&quot;);\n        }\n      };\n    &lt;\/script&gt;\n  &lt;\/body&gt;\n&lt;\/html&gt;\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u88c5\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0a\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u5b9f\u884c\u3057\u3001\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u306e\u691c\u51fa\u7d50\u679c\u3068CSV\u51fa\u529b\u306e\u5185\u5bb9\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-border\"><img decoding=\"async\" width=\"855\" height=\"327\" src=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h57_34.png\" alt=\"\u30d7\u30e9\u30b0\u30a4\u30f3\u5b9f\u884c\u306b\u3088\u308b\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u306e\u691c\u51fa\u7d50\u679c\u3068\u51fa\u529b\u3055\u308c\u305fCSV\u306e\u5185\u5bb9\u3002\" class=\"wp-image-737\" srcset=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h57_34.png 855w, https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h57_34-300x115.png 300w, https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/2025-08-17_22h57_34-768x294.png 768w\" sizes=\"(max-width: 855px) 100vw, 855px\" \/><\/figure>\n\n<!-- cgm-topic:start -->\n\n\n<p class=\"wp-block-paragraph\">Figma\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u958b\u767a\u306b\u95a2\u3059\u308b\u8a18\u4e8b\u306f\u3001\u307b\u304b\u306b\u3082\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n<div class=\"swell-block-postLink\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/12\/figma-sheet-300x169.jpg\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/cg-method.com\/figma\/figma-sheet\/\">Figma\u2502\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u60c5\u5831\u3092\u51fa\u529b\u3059\u308bFigma\u30e9\u30a4\u30d6\u30e9\u30ea<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">\u7279\u5b9a\u306eFigma\u30d5\u30a1\u30a4\u30eb\u306e\u60c5\u5831\u3092Google\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306b\u51fa\u529b\u3059\u308bGAS\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002 \u3053\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u306f\u300cFigma \u3092\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u7528\u306e\u7591\u4f3cDB\u306b\u5909\u63db\u3059\u308b\u30a8\u30f3\u30b8&#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n<div class=\"swell-block-postLink\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2026\/03\/figma-instance-main-component-name-without-library-update-300x169.jpg\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/cg-method.com\/figma\/figma-instance-main-component-name-without-library-update\/\">Figma\u30d7\u30e9\u30b0\u30a4\u30f3\u2502\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u540d\u3068\u53c2\u7167\u5143\u306e\u540d\u524d\u3092\u6bd4\u8f03\u30fb\u5909\u66f4\u3059\u308b\u65b9\u6cd5<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">Figma\u3067\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u904b\u7528\u3057\u3066\u3044\u308b\u3068\u3001\u30e1\u30a4\u30f3\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u540d\u524d\u3092\u5909\u66f4\u3057\u3066\u3082\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5074\u306b\u53cd\u6620\u3055\u308c\u306a\u3044\u30b1\u30fc\u30b9\u304c\u3042\u308a\u307e\u3059\u3002 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u540d\u524d\u3092\u5909&#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n<div class=\"swell-block-postLink\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/06\/figma-url-export-plugin-300x169.jpg\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/cg-method.com\/figma\/figma-url-export-plugin\/\">Figma\u2502\u9078\u629e\u30ec\u30a4\u30e4\u30fc\u306eURL\u3092\u4e00\u62ec\u53d6\u5f97\u3067\u304d\u308b\u30d7\u30e9\u30b0\u30a4\u30f3<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">\u901a\u5e38\u306f\u30ce\u30fc\u30c9\u3092\u9078\u629e\u3057\u3001\u53f3\u30af\u30ea\u30c3\u30af\u30e1\u30cb\u30e5\u30fc\u306e\u300c\u30b3\u30d4\u30fc\/\u8cbc\u308a\u4ed8\u3051\u300d&gt;\u300c\u9078\u629e\u7bc4\u56f2\u3078\u306e\u30ea\u30f3\u30af\u3092\u30b3\u30d4\u30fc\u300d\u304b\u3089URL\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002 \u8907\u6570\u306e\u30ce\u30fc\u30c9\u304b\u3089\u307e\u3068\u3081\u3066URL\u3092\u53d6\u5f97\u3059\u308b&#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n<div class=\"swell-block-postLink\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/cg-method.com\/figma\/wp-content\/uploads\/2025\/08\/figma-plugin-progress-bar-enoent-fix-300x169.jpg\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/cg-method.com\/figma\/figma-plugin-progress-bar-enoent-fix\/\">Figma\u30d7\u30e9\u30b0\u30a4\u30f3\u2502\u30d7\u30ed\u30b0\u30ec\u30b9\u30d0\u30fc\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">Figma\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u958b\u767a\u306b\u304a\u3044\u3066\u3001\u5927\u91cf\u30ce\u30fc\u30c9\u306e\u30b9\u30ad\u30e3\u30f3\u3084CSV\u66f8\u304d\u51fa\u3057\u3068\u3044\u3063\u305f\u6642\u9593\u306e\u304b\u304b\u308b\u51e6\u7406\u3092\u5b9f\u884c\u3059\u308b\u969b\u306f\u3001\u9032\u6357\u72b6\u6cc1\u306e\u8868\u793a\u304c\u5f79\u7acb\u3061\u307e\u3059\u3002 \u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Figma\u30d7\u30e9&#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n<!-- cgm-topic:end -->\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Figma\u30d5\u30a1\u30a4\u30eb\u5185\u3067\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u3044\u308b\u30ec\u30a4\u30e4\u30fc\u3092\u3001\u4e00\u62ec\u3067\u691c\u51fa\u3057\u3066CSV\u5f62\u5f0f\u3067\u66f8\u304d\u51fa\u3059\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u5b9f\u88c5\u624b\u9806\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002 \u624b\u52d5\u306e\u76ee\u8996\u78ba\u8a8d\u306b\u306f\u591a\u304f\u306e\u5de5\u6570\u304c\u304b\u304b\u308b\u305f\u3081\u3001\u30d7\u30e9\u30b0\u30a4\u30f3\u3092\u7528\u3044\u3066\u5168\u30ec\u30a4\u30e4\u30fc\u3092\u81ea\u52d5\u3067 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":739,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"pochipp_cv_data":"","swell_btn_cv_data":"","book_review_data":"","footnotes":"","ssp_meta_title":"Figma\u30d7\u30e9\u30b0\u30a4\u30f3\u3067\u5916\u90e8\u30b9\u30bf\u30a4\u30eb\u53c2\u7167\u3092\u691c\u51fa\u3057CSV\u51fa\u529b","ssp_meta_description":"Figma\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u5916\u90e8\u30e9\u30a4\u30d6\u30e9\u30ea\u53c2\u7167\u30ec\u30a4\u30e4\u30fc\u3092\u5168\u8d70\u67fb\u3057\u3066CSV\u51fa\u529b\u3059\u308b\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u5b9f\u88c5\u65b9\u6cd5\u3092\u89e3\u8aac\u3002manifest.json\u3084code.js\u306a\u3069\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u63b2\u8f09\u3057\u3001\u30ed\u30fc\u30ab\u30eb\u30b9\u30bf\u30a4\u30eb\u3068\u306e\u7167\u5408\u5224\u5b9a\u3084\u30c4\u30ea\u30fc\u8d70\u67fb\u306e\u4ed5\u7d44\u307f\u3092\u5b66\u3079\u307e\u3059\u3002"},"categories":[145],"tags":[],"class_list":["post-736","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-figma-tools"],"_links":{"self":[{"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/posts\/736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/comments?post=736"}],"version-history":[{"count":9,"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/posts\/736\/revisions"}],"predecessor-version":[{"id":22397,"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/posts\/736\/revisions\/22397"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/media\/739"}],"wp:attachment":[{"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/media?parent=736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/categories?post=736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cg-method.com\/figma\/wp-json\/wp\/v2\/tags?post=736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}