{"id":27244,"date":"2025-08-06T23:26:09","date_gmt":"2025-08-06T14:26:09","guid":{"rendered":"https:\/\/motoki-design.co.jp\/wordpress\/?p=27244"},"modified":"2026-10-04T16:30:54","modified_gmt":"2026-10-04T07:30:54","slug":"gas-chatgpt-x-sns-post","status":"publish","type":"post","link":"https:\/\/motoki-design.co.jp\/wordpress\/gas-chatgpt-x-sns-post\/","title":{"rendered":"WordPress\u2502\u672c\u6587\u306e\u5185\u5bb9\u3092\u8981\u7d04\u3057\u3066X\u306b\u30dd\u30b9\u30c8\u3059\u308b\u65b9\u6cd5\u2502\u30b9\u30ec\u30c3\u30c9\u5f62\u5f0f\u5bfe\u5fdc\u30fbOAuth2\u5bfe\u5fdc\u30fbChatGPT\u9023\u643a"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">2026\u5e7410\u67081\u65e5\u6539\u8a02\uff1a\u751f\u6210\u5931\u6557\u306e\u6587\u8a00\u3092\u6295\u7a3f\u3057\u306a\u3044\u3088\u3046\u3001API\u30a8\u30e9\u30fc\u6642\u306f\u505c\u6b62\u3059\u308b\u5b9f\u88c5\u306b\u5909\u66f4\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6295\u7a3f\u306fH\u5217\u3092READY\u306b\u3057\u305f\u78ba\u8a8d\u6e08\u307f\u306e\u884c\u3060\u3051\u304c\u5bfe\u8c61\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u5217\u30fbG\u5217\u306b\u5404\u6295\u7a3fID\u3092\u6587\u5b57\u5217\u3067\u4fdd\u5b58\u3057\u3001\u9014\u4e2d\u5931\u6557\u6642\u306f\u81ea\u52d5\u518d\u9001\u3057\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e2\u5b58\u306e\u6642\u9593\u30c8\u30ea\u30ac\u30fc\u306f\u3001\u5217\u8ffd\u52a0\u3068\u8a8d\u8a3c\u30fb\u691c\u8a3c\u304c\u6e08\u3080\u307e\u3067\u505c\u6b62\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u672c\u6539\u8a02\u306e\u691c\u8a3c\u306f\u5916\u90e8\u9001\u4fe1\u306e\u306a\u3044\u6a21\u64ec\u30c6\u30b9\u30c8\u3067\u3001\u5b9fAPI\u8a8d\u8a3c\u30fb\u6295\u7a3f\u306f\u672a\u691c\u8a3c\u3067\u3059\u3002<\/p>\n\n\n<p class=\"wp-block-paragraph\">WordPress\u3067\u6295\u7a3f\u3057\u305f\u8a18\u4e8b\u306e\u8981\u7d04\u3092AI\u3067\u51e6\u7406\u3001\u305d\u308c\u3092\u9069\u5207\u306a\u5f62\u3067X\u306b\u30dd\u30b9\u30c8\u3057\u305f\u3044\u3053\u3068\u304c\u306a\u3044\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Web\u5236\u4f5c\u521d\u5fc3\u8005\u5411\u3051\u306e\u8a18\u4e8b\u3092\u66f8\u3044\u3066\u3044\u3066\u3001SNS\uff08X\uff0f\u65e7Twitter\uff09\u306b\u3082\u62e1\u6563\u3057\u305f\u3044\u2026\u3067\u3082\u3001\u6295\u7a3f\u6587\u3092\u6bce\u56de\u8003\u3048\u308b\u306e\u304c\u9762\u5012\uff01<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GAS\u304b\u3089OpenAI API\u3067\u6295\u7a3f\u6587\u3092\u751f\u6210\u3057\u3001\u4eba\u304c\u5185\u5bb9\u3092\u78ba\u8a8d\u3057\u305f\u884c\u3092X API\u3078\u9001\u308b\u69cb\u6210\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"603\" height=\"640\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-04_23h33_33.png\" alt=\"\u8a18\u4e8b\u306e\u8981\u7d04\u3068\u30b9\u30ec\u30c3\u30c9\u5f62\u5f0f\u3067\u8ffd\u52a0\u3055\u308c\u305f\u8a18\u4e8b\u30bf\u30a4\u30c8\u30eb\u3084URL\u304cX\u306b\u30dd\u30b9\u30c8\u3055\u308c\u3066\u3044\u308b\u69d8\u5b50\u3002\" class=\"wp-image-27250\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-04_23h33_33.png 603w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-04_23h33_33-382x405.png 382w\" sizes=\"(max-width: 603px) 100vw, 603px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u306e\u753b\u50cf\u306f\u65e7\u7248\u3067\u8981\u7d04\u3068\u8a18\u4e8b\u30bf\u30a4\u30c8\u30eb\u30fbURL\u3092\u30b9\u30ec\u30c3\u30c9\u6295\u7a3f\u3057\u305f\u8a18\u9332\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2026\u5e7410\u67081\u65e5\u306e\u6539\u8a02\u30b3\u30fc\u30c9\u306b\u3088\u308b\u6295\u7a3f\u6210\u529f\u3092\u793a\u3059\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u63b2\u8f09\u753b\u50cf\u306f\u65e7\u7248\u306e\u753b\u9762\u3067\u3042\u308a\u3001\u73fe\u5728\u306e\u8a2d\u5b9a\u753b\u9762\u3084\u6539\u8a02\u30b3\u30fc\u30c9\u306e\u5b9f\u884c\u7d50\u679c\u3068\u306f\u7570\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list is-style-num_circle\">\n<li>\u30d6\u30ed\u30b0\u8a18\u4e8b\u306e\u5185\u5bb9\uff08\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306b\u5165\u529b\uff09\u3092\u5143\u306b<\/li>\n\n\n\n<li>OpenAI API\u3067Web\u521d\u5fc3\u8005\u5411\u3051\u306e\u6295\u7a3f\u6587\u3092\u751f\u6210<\/li>\n\n\n\n<li>\u4eba\u304c\u5185\u5bb9\u3092\u78ba\u8a8d\u3057\u3066H\u5217\u3092READY\u306b\u3057\u305f\u884c\u3092X\uff08\u65e7Twitter\uff09\u3078\u6295\u7a3f<\/li>\n\n\n\n<li>\u30b9\u30ec\u30c3\u30c9\u5f62\u5f0f\uff082\u30c4\u30a4\u30fc\u30c8\uff09\u306b\u3082\u5bfe\u5fdc<\/li>\n\n\n\n<li>\u6295\u7a3fID\u3068\u9014\u4e2d\u72b6\u614b\u3092\u8a18\u9332\u3057\u3001\u5fdc\u7b54\u4e0d\u660e\u6642\u306e\u81ea\u52d5\u518d\u9001\u3092\u505c\u6b62<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">WordPress\u3067\u672c\u6587\u306e\u5185\u5bb9\u3092\u5206\u6790\u3057\u3066X\u306b\u30dd\u30b9\u30c8\u3059\u308b\u65b9\u6cd5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress\u304b\u3089CSV\u3092\u51fa\u529b\u3057\u3001\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306b\u8aad\u307f\u8fbc\u3093\u3067\u304b\u3089GAS\u3067\u8981\u7d04\u3068\u6295\u7a3f\u3092\u51e6\u7406\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OpenAI API\u30ad\u30fc\u3068X\u5074\u306eOAuth 2.0\u8a2d\u5b9a\u3092\u5225\u3005\u306b\u7528\u610f\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">WordPress\u306e\u6295\u7a3f\u8a18\u4e8b\u306e\u30bf\u30a4\u30c8\u30eb\u3001URL\u3001\u672c\u6587\u3092\u51fa\u529b\u3059\u308b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u306ffunctions.php\u3092\u4f7f\u3063\u3066WordPress\u306e\u6295\u7a3f\u8a18\u4e8b\u306e\u30bf\u30a4\u30c8\u30eb\u3001URL\u3001\u672c\u6587\u3092\u51fa\u529b\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"is-style-icon_pen wp-block-paragraph\">\u4ee5\u4e0b\u306ePHP\u306f\u516c\u958b\u8a18\u4e8b\u3092\u5bfe\u8c61\u306b\u3057\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u4ed8\u304d\u8a18\u4e8b\u3068\u672c\u6587\u306bcodoc\u3068\u3044\u3046\u6587\u5b57\u5217\u304c\u3042\u308b\u8a18\u4e8b\u3092\u9664\u5916\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"is-style-icon_pen wp-block-paragraph\">Code Snippets\u304b\u3089\u767b\u9332\u3059\u308b\u5834\u5408\u3082\u3001\u9069\u7528\u524d\u306b\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3092\u53d6\u308a\u3001\u691c\u8a3c\u74b0\u5883\u3067CSV\u306e\u51fa\u529b\u5185\u5bb9\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-php\" data-lang=\"PHP\"><code>add_action(&#x27;init&#x27;, function () {\n    if (isset($_GET[&#x27;download_csv&#x27;]) &amp;&amp; current_user_can(&#x27;manage_options&#x27;)) {\n        export_posts_to_csv();\n    }\n});\n\nfunction export_posts_to_csv() {\n    $args = [\n        &#x27;post_type&#x27; =&gt; &#x27;post&#x27;,\n        &#x27;posts_per_page&#x27; =&gt; -1,\n        &#x27;post_status&#x27; =&gt; &#x27;publish&#x27;,\n        &#x27;has_password&#x27; =&gt; false\n    ];\n    $posts = get_posts($args);\n\n    header(&#x27;Content-Type: text\/csv; charset=UTF-8&#x27;);\n    header(&#x27;Content-Disposition: attachment; filename=&quot;posts_export.csv&quot;&#x27;);\n    header(&#x27;Pragma: no-cache&#x27;);\n    header(&#x27;Expires: 0&#x27;);\n\n    $output = fopen(&#x27;php:\/\/output&#x27;, &#x27;w&#x27;);\n    fwrite($output, chr(0xEF) . chr(0xBB) . chr(0xBF)); \/\/ BOM\n\n    fputcsv($output, [&#x27;\u30bf\u30a4\u30c8\u30eb&#x27;, &#x27;URL&#x27;, &#x27;\u672c\u6587&#x27;]);\n\n    foreach ($posts as $post) {\n        if (stripos($post-&gt;post_content, &#x27;codoc&#x27;) !== false) { continue; }\n        $title = $post-&gt;post_title;\n        $url = get_permalink($post-&gt;ID);\n        $content = strip_tags($post-&gt;post_content);\n        $content = preg_replace(&#x27;\/\\s+\/&#x27;, &#x27; &#x27;, $content); \/\/ \u6539\u884c\u30fb\u7a7a\u767d\u9664\u53bb\n        fputcsv($output, array_map(function ($cell) {\n            return preg_match(&#x27;\/^[=+@\\-\\t\\r]\/&#x27;, $cell) ? &quot;&#x27;&quot; . $cell : $cell;\n        }, [$title, $url, $content]));\n    }\n\n    fclose($output);\n    exit;\n}\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b3\u30fc\u30c9\u3092\u8a2d\u7f6e\u3057\u305f\u81ea\u5206\u306e\u30b5\u30a4\u30c8\u3067\u3001\u7ba1\u7406\u8005\u6a29\u9650\u306e\u3042\u308b\u30e6\u30fc\u30b6\u30fc\u3068\u3057\u3066\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304b\u3089\u3001URL\u306b<code>?download_csv=1<\/code>\u3092\u4ed8\u3051\u3066\u958b\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b21\u306eURL\u306f\u5f53\u30b5\u30a4\u30c8\u306e\u5834\u5408\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>https:\/\/motoki-design.co.jp\/wordpress\/csv-export\/?download_csv=1<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u51fa\u529b\u3055\u308c\u308b\u30d5\u30a1\u30a4\u30eb\u540d\u306f<code>posts_export.csv<\/code>\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306bcsv\u3092\u8aad\u307f\u8fbc\u307e\u305b\u308b\u3068\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-border\"><img decoding=\"async\" width=\"812\" height=\"242\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-03_23h03_34-812x242.png\" alt=\"\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305fCSV\u30d5\u30a1\u30a4\u30eb\u3092\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306b\u8aad\u307f\u8fbc\u307e\u305b\u305f\u753b\u9762\u3002\" class=\"wp-image-27245\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-03_23h03_34-812x242.png 812w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-03_23h03_34-382x114.png 382w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-03_23h03_34-768x228.png 768w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-03_23h03_34.png 924w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">OpenAI API\u3092\u4f7f\u3063\u305fSNS\u6295\u7a3f\u6587\u306e\u81ea\u52d5\u751f\u6210\uff08GAS\uff09<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e8b\u524d\u306bOpenAI API\u30ad\u30fc\u3092\u7528\u610f\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ChatGPT\u306e\u30ed\u30b0\u30a4\u30f3\u7528\u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u3046\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u7de8\u96c6\u6a29\u9650\u3092\u6301\u3064\u4eba\u306f\u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u3082\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u305f\u3081\u3001\u5171\u6709\u7bc4\u56f2\u3092\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/zenn.dev\/umi_mori\/books\/chatbot-chatgpt\/viewer\/how_to_use_openai_api\" data-type=\"link\" data-id=\"https:\/\/zenn.dev\/umi_mori\/books\/chatbot-chatgpt\/viewer\/how_to_use_openai_api\">\u8a73\u3057\u3044\u3084\u308a\u65b9<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">API\u30ad\u30fc\u3092\u4f7f\u3046\u8a8d\u8a3c\u65b9\u5f0f\u306f<a href=\"https:\/\/developers.openai.com\/api\/reference\/overview#authentication\">OpenAI\u516c\u5f0f\u306e\u8a8d\u8a3c\u8cc7\u6599<\/a>\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\uff082026\u5e7410\u67084\u65e5\u78ba\u8a8d\uff09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u7a0b\u306e\u8a18\u4e8b\u306e\u60c5\u5831\u3092\u8aad\u307f\u8fbc\u3093\u3060\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u3092\u7528\u610f\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u69cb\u6210<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>A\u5217<\/th><th>B\u5217<\/th><th>C\u5217<\/th><th>D\u5217<\/th><th>E\u5217<\/th><th>F\u5217<\/th><th>G\u5217<\/th><th>H\u5217<\/th><\/tr><\/thead><tbody><tr><td>\u30bf\u30a4\u30c8\u30eb<\/td><td>\u8a18\u4e8bURL<\/td><td>\u672c\u6587<\/td><td>\u6295\u7a3f\u6587<\/td><td>\u5b8c\u4e86\u65e5<\/td><td>1\u4ef6\u76eeID<\/td><td>2\u4ef6\u76eeID<\/td><td>\u72b6\u614b<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">GAS\u306e\u30b3\u30fc\u30c9<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306e\u4e0a\u90e8\u30e1\u30cb\u30e5\u30fc\u3000&gt;\u3000\u62e1\u5f35\u6a5f\u80fd\u3000&gt; Apps Script\u304b\u3089\u30b3\u30fc\u30c9\u3092\u8a18\u8f09\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b6f\u8eca\u30a2\u30a4\u30b3\u30f3\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u8a2d\u5b9a\u304b\u3089\u3001\u30b9\u30af\u30ea\u30d7\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3\u306bOpenAI API\u30ad\u30fc\u3092\u767b\u9332\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u63b2\u8f09\u30b3\u30fc\u30c9\u306b\u5408\u308f\u305b\u3066\u30d7\u30ed\u30d1\u30c6\u30a3\u540d\u306f<code>ACCESS_TOKEN<\/code>\u3068\u3057\u307e\u3059\u304c\u3001\u4fdd\u5b58\u3059\u308b\u5024\u306fChatGPT\u306e\u30ed\u30b0\u30a4\u30f3\u7528\u30c8\u30fc\u30af\u30f3\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u540d\u524d<\/th><th>\u5024\uff1aOpenAI API\u30ad\u30fc<\/th><\/tr><\/thead><tbody><tr><td>ACCESS_TOKEN<\/td><td>xxxxxxxxxxxxxxxx<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"812\" height=\"574\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h05_36-812x574.png\" alt=\"ACCESS_TOKEN\u3068\u3044\u3046\u540d\u524d\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u767b\u9332\u3059\u308b\u65e7\u7248\u306e\u8a2d\u5b9a\u753b\u9762\u3002\" class=\"wp-image-27262\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h05_36-812x574.png 812w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h05_36-382x270.png 382w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h05_36-768x543.png 768w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h05_36.png 924w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u3055\u3089\u306b\u4e0b\u8a18\u306e\u30b3\u30fc\u30c9\u3082\u8a18\u8f09<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>\/\/ \u30ab\u30b9\u30bf\u30e0\u30e1\u30cb\u30e5\u30fc\u8ffd\u52a0\nfunction onOpen() {\n  const ui = SpreadsheetApp.getUi();\n  ui.createMenu(&quot;AI\u8981\u7d04&quot;)\n    .addItem(&quot;SNS\u5411\u3051\u6295\u7a3f\u6587\u3092\u4f5c\u6210\uff08D\u5217\uff09&quot;, &quot;generateSocialPost&quot;)\n    .addToUi();\n}\n\n\/\/ D\u5217\uff1aX\u5411\u3051\u6295\u7a3f\u6587\nfunction generateSocialPost() {\n  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(&quot;\u30b7\u30fc\u30c81&quot;);\n  const apiKey = PropertiesService.getScriptProperties().getProperty(&quot;ACCESS_TOKEN&quot;);\n  const lastRow = sheet.getLastRow();\n\n  for (let i = 2; i &lt;= lastRow; i++) {\n    const body = sheet.getRange(i, 3).getValue();\n    const postText = sheet.getRange(i, 4).getValue();\n\n    if (body &amp;&amp; !postText) {\n      const prompt = `\n\u4ee5\u4e0b\u306e\u6587\u7ae0\u3092\u3082\u3068\u306b\u3001Web\u5236\u4f5c\u521d\u5fc3\u8005\u3067\u3082\u308f\u304b\u308b\u3088\u3046\u306bX\uff08\u65e7Twitter\uff09\u5411\u3051\u306e\u6295\u7a3f\u6587\u3092\u4f5c\u3063\u3066\u304f\u3060\u3055\u3044\u3002\n\n\u3010\u30eb\u30fc\u30eb\u3011\n- \u96e3\u3057\u3044\u8a00\u8449\u306f\u907f\u3051\u308b\n- \u7d75\u6587\u5b57\u3084\u30cf\u30c3\u30b7\u30e5\u30bf\u30b0\u306fOK\n- 140\u6587\u5b57\u4ee5\u5185\u306b\u3053\u3060\u308f\u3089\u306a\u304f\u3066\u3044\u3044\n- \u8aad\u3093\u3060\u4eba\u304c\u8a18\u4e8b\u3092\u898b\u305f\u304f\u306a\u308b\u3088\u3046\u306b\uff01\n\n\u6587\u7ae0\uff1a\n${body}\n      `.trim();\n\n      const result = callChatGPT(apiKey, prompt);\n      sheet.getRange(i, 4).setValue(result);\n      Utilities.sleep(1500);\n    }\n  }\n}\n\nfunction callChatGPT(apiKey, prompt) {\n  const payload = {\n    model: &quot;gpt-4o&quot;,\n    messages: [{ role: &quot;user&quot;, content: prompt }],\n    temperature: 0.7\n  };\n\n  const options = {\n    method: &quot;post&quot;,\n    contentType: &quot;application\/json&quot;,\n    headers: { Authorization: &quot;Bearer &quot; + apiKey },\n    payload: JSON.stringify(payload),\n    muteHttpExceptions: true\n  };\n\n  const res = UrlFetchApp.fetch(&quot;https:\/\/api.openai.com\/v1\/chat\/completions&quot;, options);\n  const status = res.getResponseCode();\n  if (status &lt; 200 || status &gt;= 300) throw new Error(&quot;OpenAI HTTP &quot; + status);\n  const json = JSON.parse(res.getContentText());\n  const choice = json.choices?.[0];\n  const text = choice?.message?.content;\n  if (choice?.finish_reason !== &quot;stop&quot; || typeof text !== &quot;string&quot; || !text.trim()) {\n    throw new Error(&quot;\u8981\u7d04\u304c\u6b63\u5e38\u306b\u5b8c\u4e86\u3057\u3066\u3044\u307e\u305b\u3093\u3002D\u5217\u306b\u306f\u4fdd\u5b58\u3057\u307e\u305b\u3093\u3002&quot;);\n  }\n  return text.trim();\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><code>generateSocialPost()<\/code>\u3092\u5b9f\u884c\u3059\u308b\u3068C\u5217\u306e\u672c\u6587\u3092\u898b\u3066D\u5217\u306b\u6295\u7a3f\u7528\u306e\u6587\u7ae0\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306fgpt-4o\u3092\u4f7f\u3063\u3066\u307e\u3059\u304c\u3001\u4ed6\u306b\u3082\u3044\u308d\u3044\u308d\u306a\u30e2\u30c7\u30eb\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u4f8b\u306fgpt-4o\u3092\u6307\u5b9a\u3059\u308bChat Completions\u7528\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u97f3\u58f0\u30fbRealtime\u5411\u3051\u30e2\u30c7\u30eb\u306a\u3069\u3092\u540c\u3058\u5f62\u5f0f\u3067\u5dee\u3057\u66ff\u3048\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5909\u66f4\u6642\u306f\u30e2\u30c7\u30eb\u306e\u5bfe\u5fdcAPI\u3068\u5165\u529b\u5f62\u5f0f\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">X\uff08\u65e7Twitter\uff09\u306eAPI\u3068OAuth 2.0\u306e\u8a2d\u5b9a<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u306fOAuth 2.0 \u3092\u4f7f\u3046\u6e96\u5099\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list is-style-num_circle\">\n<li>X\u306e\u958b\u767a\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u767b\u9332\uff08\u7121\u6599\uff09<\/li>\n\n\n\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u3092\u4f5c\u6210<\/li>\n\n\n\n<li>GAS\u306b\u8a2d\u5b9a\uff08CLIENT_ID \/ CLIENT_SECRET\uff09<\/li>\n\n\n\n<li>\u81ea\u4f5c\u95a2\u6570\u3067OAuth2\u306e\u8a2d\u5b9a\u3092\u8a18\u8ff0<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">X\u306e\u958b\u767a\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u767b\u9332\uff08\u7121\u6599\uff09<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u306f\u4e0b\u8a18\u306eURL\u304b\u3089\u958b\u767a\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n<div class=\"swell-block-postLink\">\t\t\t<a href=\"https:\/\/developer.x.com\/en\/portal\/projects-and-apps\" class=\"c-blogLink -external\" data-style=\"text\" target=\"_blank\" rel=\"noopener noreferrer\">\n\t\t\t\t<!-- <i class=\"c-blogLink__icon icon-link\" role=\"presentation\"><\/i> -->\n\t\t\t\t<span class=\"c-blogLink__icon\">\n\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"swl-svg-externalLink __svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 48 48\" role=\"img\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M44 2H30c-1.1 0-2 .9-2 2s.9 2 2 2h9.2L24 21.2c-.8.8-.8 2 0 2.8s2 .8 2.8 0L42 8.8V18c0 1.1.9 2 2 2s2-.9 2-2V4c0-1.1-.9-2-2-2z\" \/><path d=\"M41 27c-1.1 0-2 .9-2 2v10c0 1.1-.9 2-2 2H9c-1.1 0-2-.9-2-2V11c0-1.1.9-2 2-2h10c1.1 0 2-.9 2-2s-.9-2-2-2H9c-3.3 0-6 2.7-6 6v28c0 3.3 2.7 6 6 6h28c3.3 0 6-2.7 6-6V29c0-1.1-.9-2-2-2z\" \/><\/svg>\t\t\t\t<\/span>\n\t\t\t\t<span class=\"c-blogLink__text\">https:\/\/developer.x.com\/en\/portal\/projects-and-apps<\/span>\n\t\t\t<\/a>\n\t\t<\/div>\n\n\n<p class=\"wp-block-paragraph\">\u9014\u4e2d\u3001\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc\u30a2\u30ab\u30a6\u30f3\u30c8\u7533\u8acb\u6642\u306b\u8a73\u7d30\u3092\u8aac\u660e\u3059\u308b\uff08250\u6587\u5b57\u4ee5\u4e0a\uff09\u7b87\u6240\u304c\u3042\u308b\u306e\u3067\u3059\u304c\u3001\u4f8b\u6587\u3092\u66f8\u3044\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-border\"><img decoding=\"async\" width=\"794\" height=\"620\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h09_36.png\" alt=\"\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc\u30a2\u30ab\u30a6\u30f3\u30c8\u7533\u8acb\u6642\u306e\u8a73\u7d30\u8aac\u660e\u6b04\u306b\u8a18\u5165\u3059\u308b\u82f1\u6587\u3084\u7406\u7531\u306e\u4f8b\u6587\u3002\" class=\"wp-image-27264\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h09_36.png 794w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h09_36-382x298.png 382w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h09_36-768x600.png 768w\" sizes=\"(max-width: 794px) 100vw, 794px\" \/><\/figure>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>\u79c1\u306f\u3001\u81ea\u793e\u3067\u904b\u55b6\u3057\u3066\u3044\u308bWordPress\u30d6\u30ed\u30b0\u306e\u8a18\u4e8b\u3092\u3001X\uff08\u65e7Twitter\uff09\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u81ea\u52d5\u6295\u7a3f\u3059\u308b\u76ee\u7684\u3067Twitter API\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002  \n\u5177\u4f53\u7684\u306b\u306f\u3001\u8a18\u4e8b\u672c\u6587\u3092\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306b\u307e\u3068\u3081\u3001ChatGPT API\u3092\u6d3b\u7528\u3057\u3066\u308f\u304b\u308a\u3084\u3059\u3044\u77ed\u6587\uff08\u8981\u7d04\uff09\u3092\u751f\u6210\u3057\u3001\u305d\u308c\u3092X\u30781\u65e51\u4ef6\u6295\u7a3f\u3057\u307e\u3059\u3002  \n\u6295\u7a3f\u5185\u5bb9\u306f\u3059\u3079\u3066\u81ea\u793e\u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u8a18\u4e8b\u306b\u9650\u5b9a\u3057\u3001\u518d\u914d\u4fe1\u30fb\u5206\u6790\u30fb\u518d\u8ca9\u58f2\u30fbDM\u9001\u4fe1\u30fb\u30d5\u30a9\u30ed\u30fc\u64cd\u4f5c\u306a\u3069\u306f\u4e00\u5207\u884c\u3044\u307e\u305b\u3093\u3002  \n\u7d14\u7c8b\u306b\u60c5\u5831\u767a\u4fe1\u3092\u52b9\u7387\u5316\u3059\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u305f\u975e\u4fb5\u8972\u7684\u306a\u5229\u7528\u3067\u3059\u3002  \n\u3053\u306e\u7528\u9014\u306e\u7bc4\u56f2\u5185\u3067\u306e\u307fAPI\u3092\u5229\u7528\u3057\u3001\u30dd\u30ea\u30b7\u30fc\u3084\u5229\u7528\u898f\u7d04\u3092\u53b3\u5b88\u3044\u305f\u3057\u307e\u3059\u3002\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3061\u3089\u306e\u30b5\u30a4\u30c8\u3082\u53c2\u8003\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n<div class=\"swell-block-postLink\">\t\t\t<a href=\"https:\/\/feynman.co.jp\/it-tool-takumi\/gas-x-twitter-api-auto-post-tool\/\" class=\"c-blogLink -external\" data-style=\"text\" target=\"_blank\" rel=\"noopener noreferrer\">\n\t\t\t\t<!-- <i class=\"c-blogLink__icon icon-link\" role=\"presentation\"><\/i> -->\n\t\t\t\t<span class=\"c-blogLink__icon\">\n\t\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"swl-svg-externalLink __svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 48 48\" role=\"img\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M44 2H30c-1.1 0-2 .9-2 2s.9 2 2 2h9.2L24 21.2c-.8.8-.8 2 0 2.8s2 .8 2.8 0L42 8.8V18c0 1.1.9 2 2 2s2-.9 2-2V4c0-1.1-.9-2-2-2z\" \/><path d=\"M41 27c-1.1 0-2 .9-2 2v10c0 1.1-.9 2-2 2H9c-1.1 0-2-.9-2-2V11c0-1.1.9-2 2-2h10c1.1 0 2-.9 2-2s-.9-2-2-2H9c-3.3 0-6 2.7-6 6v28c0 3.3 2.7 6 6 6h28c3.3 0 6-2.7 6-6V29c0-1.1-.9-2-2-2z\" \/><\/svg>\t\t\t\t<\/span>\n\t\t\t\t<span class=\"c-blogLink__text\">\u30102026\u6700\u65b0\u3011\u3010\u81ea\u52d5\u6295\u7a3f\u3011GAS\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u6d3b\u7528\uff01X\uff08\u65e7\u30c4\u30a4\u30c3\u30bf\u30fc\uff09\u81ea\u52d5\u8a2d\u5b9a\u306e\u4f5c\u308a\u65b9\u3010\u30b3\u30d4\u30daOK\u30fb\u30bd\u30fc\u30b9&#8230;<\/span>\n\t\t\t<\/a>\n\t\t<\/div>\n\n\n<h4 class=\"wp-block-heading\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u30a2\u30d7\u30ea\u3092\u4f5c\u6210<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u304b\u3089\u62e1\u5f35\u6a5f\u80fd &gt; Apps Script\u3092\u9078\u629e<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u306b\u5f8c\u8ff0\u306eOAuth2\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u3057\u3066\u304b\u3089\u3001\u4e0b\u8a18\u30b3\u30fc\u30c9\u3067Callback URL\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u3067\u306fCLIENT_ID\/CLIENT_SECRET\u306f\u307e\u3060\u4e0d\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-php\" data-lang=\"PHP\"><code>function logRedirectUri() {\n  Logger.log(&quot;Redirect URI\uff08Callback URL\uff09:&quot;);\n  Logger.log(OAuth2.getRedirectUri());\n}<\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-border\"><img decoding=\"async\" width=\"812\" height=\"160\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h54_15-812x160.png\" alt=\"\u5b9f\u884c\u30ed\u30b0\u306b\u51fa\u529b\u3055\u308c\u305f\u30ea\u30c0\u30a4\u30ec\u30af\u30c8URL\u306e\u78ba\u8a8d\u753b\u9762\u3002\" class=\"wp-image-27254\" style=\"width:852px;height:auto\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h54_15-812x160.png 812w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h54_15-382x75.png 382w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h54_15-768x152.png 768w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h54_15.png 924w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u306e\u5f8c\u306f\u958b\u767a\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30b5\u30a4\u30c8\u306b\u623b\u308a\u3001App\u306e\u8a2d\u5b9a\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"812\" height=\"393\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h49_56-812x393.png\" alt=\"\u958b\u767a\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30b5\u30a4\u30c8\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u3092\u958b\u3044\u3066\u3044\u308b\u753b\u9762\u3002\" class=\"wp-image-27253\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h49_56-812x393.png 812w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h49_56-382x185.png 382w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h49_56-768x372.png 768w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h49_56.png 924w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"812\" height=\"393\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h51_56-812x393.png\" alt=\"Callback URI\u306e\u9805\u76ee\u306bURL\u3092\u5165\u529b\u3059\u308b\u8a2d\u5b9a\u753b\u9762\u3002\" class=\"wp-image-27257\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h51_56-812x393.png 812w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h51_56-382x185.png 382w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h51_56-768x372.png 768w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h51_56.png 924w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Callback URI \u306e\u3068\u3053\u308d\u306b\u5148\u7a0b\u306eCallback URL\u3092\u8a18\u5165\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"swell-block-columns\"><div class=\"swell-block-columns__inner\">\n<div class=\"swell-block-column swl-has-mb--s\">\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"552\" height=\"599\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h55_20.png\" alt=\"\u958b\u767a\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8a2d\u5b9a\u3067\u30b3\u30fc\u30eb\u30d0\u30c3\u30afURL\u3092\u5165\u529b\u3057\u305f\u753b\u9762\u3002\" class=\"wp-image-27255\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h55_20.png 552w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h55_20-382x415.png 382w\" sizes=\"(max-width: 552px) 100vw, 552px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"swell-block-column swl-has-mb--s\">\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"550\" height=\"749\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h55_26.png\" alt=\"\u8a2d\u5b9a\u4fdd\u5b58\u5f8c\u306bCLIENT_ID\u3068CLIENT_SECRET\u304c\u8868\u793a\u3055\u308c\u305f\u753b\u9762\u3002\" class=\"wp-image-27256\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h55_26.png 550w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h55_26-382x520.png 382w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/figure>\n<\/div>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u5b58\u5f8c\u306bCLIENT_ID \/ CLIENT_SECRET\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u30b3\u30d4\u30fc\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-border\"><img decoding=\"async\" width=\"595\" height=\"560\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h14_26.png\" alt=\"\u8a2d\u5b9a\u4fdd\u5b58\u5f8c\u306b\u753b\u9762\u4e0a\u306b\u8868\u793a\u3055\u308c\u305f\u30af\u30e9\u30a4\u30a2\u30f3\u30c8ID\u3068\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3002\" class=\"wp-image-27266\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h14_26.png 595w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h14_26-382x360.png 382w\" sizes=\"(max-width: 595px) 100vw, 595px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">GAS\u306b\u8a2d\u5b9a\uff08CLIENT_ID \/ CLIENT_SECRET\uff09<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b9\u30af\u30ea\u30d7\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u4e0b\u8a18\u306e2\u3064\u3092\u8ffd\u52a0\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-border\"><img decoding=\"async\" width=\"812\" height=\"818\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h06_37-812x818.png\" alt=\"\u30b9\u30af\u30ea\u30d7\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u30af\u30e9\u30a4\u30a2\u30f3\u30c8ID\u3068\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u8ffd\u52a0\u3057\u305f\u753b\u9762\u3002\" class=\"wp-image-27263\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h06_37-812x818.png 812w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h06_37-382x385.png 382w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h06_37-768x774.png 768w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h06_37.png 917w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u540d\u524d<\/th><th>ID<\/th><\/tr><\/thead><tbody><tr><td>CLIENT_ID<\/td><td>xxxxxxxxxxxxxxxx<\/td><\/tr><tr><td>CLIENT_SECRET<\/td><td>xxxxxxxxxxxxxxxx<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u3055\u3089\u306bGAS\u306b\u4e0b\u8a18\u306e\u30b3\u30fc\u30c9\u3092\u633f\u5165<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>function main() {\n  const service = getService();\n  if (service.hasAccess()) {\n    Logger.log(&quot;Already authorized&quot;);\n  } else {\n    const authorizationUrl = service.getAuthorizationUrl();\n    Logger.log(&#x27;Open the following URL and re-run the script: %s&#x27;, authorizationUrl);\n  }\n}<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f8c\u8ff0\u306eOAuth2\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u8a8d\u8a3c\u95a2\u6570\u3092\u8ffd\u52a0\u3057\u3066\u304b\u3089<code>main()<\/code>\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u63b2\u8f09\u30b3\u30fc\u30c9\u306f\u672a\u8a8d\u8a3c\u306a\u3089<code>Open the following URL and re-run the script:<\/code>\u3068\u8a8d\u8a3c\u7528URL\u3092\u30ed\u30b0\u3078\u51fa\u3057\u3001\u8a8d\u8a3c\u6e08\u307f\u306a\u3089<code>Already authorized<\/code>\u3068\u8868\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"708\" height=\"250\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h02_41.png\" alt=\"\u5b9f\u884c\u5f8c\u306b\u8a8d\u8a3c\u7528URL\u304c\u8868\u793a\u3055\u308c\u305f\u753b\u9762\u3002\" class=\"wp-image-27260\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h02_41.png 708w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h02_41-382x135.png 382w\" sizes=\"(max-width: 708px) 100vw, 708px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u30ed\u30b0\u306b\u51fa\u305f\u8a8d\u8a3c\u7528URL\u3092\u958b\u304d\u3001\u5bfe\u8c61\u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u8981\u6c42\u3055\u308c\u308b\u6a29\u9650\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u3001\u30a2\u30d7\u30ea\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"507\" height=\"646\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h15_17.png\" alt=\"\u30a2\u30d7\u30ea\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u8a31\u53ef\u3059\u308b\u8a8d\u8a3c\u30dc\u30bf\u30f3\u304c\u8868\u793a\u3055\u308c\u305f\u753b\u9762\u3002\" class=\"wp-image-27267\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h15_17.png 507w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h15_17-382x487.png 382w\" sizes=\"(max-width: 507px) 100vw, 507px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u63b2\u8f09\u30b3\u30fc\u30c9\u306e<code>authCallback()<\/code>\u306f\u3001\u8a8d\u8a3c\u6210\u529f\u6642\u306b\u8a8d\u8a3c\u5b8c\u4e86\u3068\u753b\u9762\u3092\u9589\u3058\u308b\u6848\u5185\u3092\u8fd4\u3059\u5b9f\u88c5\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u306eSuccess!\u753b\u9762\u306f\u65e7\u7248\u306e\u8a18\u9332\u3067\u3001\u6539\u8a02\u7248\u306e\u5b9f\u8a8d\u8a3c\u306f\u672a\u691c\u8a3c\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-border\"><img decoding=\"async\" width=\"767\" height=\"229\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h11_46.png\" alt=\"\u8a8d\u8a3c\u5b8c\u4e86\u6642\u306b\u8868\u793a\u3055\u308c\u308b\u30b5\u30af\u30bb\u30b9\u753b\u9762\u3002\" class=\"wp-image-27265\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h11_46.png 767w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h11_46-382x114.png 382w\" sizes=\"(max-width: 767px) 100vw, 767px\" \/><\/figure>\n\n\n\n<p class=\"is-style-icon_pen wp-block-paragraph\">\u203b\u4eca\u56de\u306e\u3088\u3046\u306b\u3001\u81ea\u52d5\u6295\u7a3f\u3060\u3051\u3092\u884c\u3046\u7528\u9014\u3067\u306f\u3001<strong>GAS\u306e\u300c\u30c7\u30d7\u30ed\u30a4\u300d\u306f\u4e0d\u8981\u3067\u3059<\/strong>\u3002<\/p>\n\n\n\n<p class=\"is-style-icon_pen wp-block-paragraph\"><code>\/usercallback<\/code>\u306f\u8a8d\u8a3c\u5f8c\u306e\u623b\u308a\u5148URL\u306b\u542b\u307e\u308c\u308b\u30d1\u30b9\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"is-style-icon_pen wp-block-paragraph\">\u63b2\u8f09\u30b3\u30fc\u30c9\u3067\u6307\u5b9a\u3059\u308b\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u95a2\u6570\u540d\u306f<code>authCallback<\/code>\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u540c\u3058GAS\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u6b21\u306e\u8a8d\u8a3c\u95a2\u6570\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OAuth2\u30e9\u30a4\u30d6\u30e9\u30ea\u306fgenerateCodeVerifier\u3092\u5099\u3048\u308b\u7248\u3092\u4f7f\u3044\u3001X\u5074\u3067\u306fClient Secret\u3092\u4f7f\u3046Web\u30a2\u30d7\u30ea\u3068\u3057\u3066\u767b\u9332\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8a8d\u8a3c\u30e6\u30fc\u30b6\u30fc\u3068\u6642\u9593\u30c8\u30ea\u30ac\u30fc\u306e\u4f5c\u6210\u8005\u3092\u540c\u3058\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism lang-js\" data-lang=\"JavaScript\"><code>function getService() {\n  const props = PropertiesService.getScriptProperties();\n  const id = props.getProperty(&quot;CLIENT_ID&quot;);\n  const secret = props.getProperty(&quot;CLIENT_SECRET&quot;);\n  if (!id || !secret) throw new Error(&quot;X\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u8a2d\u5b9a\u304c\u3042\u308a\u307e\u305b\u3093&quot;);\n  return OAuth2.createService(&quot;WazaX&quot;)\n    .setAuthorizationBaseUrl(&quot;https:\/\/x.com\/i\/oauth2\/authorize&quot;)\n    .setTokenUrl(&quot;https:\/\/api.x.com\/2\/oauth2\/token&quot;)\n    .setClientId(id)\n    .setClientSecret(secret)\n    .setCallbackFunction(&quot;authCallback&quot;)\n    .setPropertyStore(PropertiesService.getUserProperties())\n    .setCache(CacheService.getUserCache())\n    .setLock(LockService.getUserLock())\n    .setScope(&quot;tweet.read tweet.write users.read offline.access&quot;)\n    .setTokenHeaders({Authorization: &quot;Basic &quot; + Utilities.base64Encode(id + &quot;:&quot; + secret)})\n    .generateCodeVerifier();\n}\nfunction authCallback(request) {\n  const ok = getService().handleCallback(request);\n  return HtmlService.createHtmlOutput(ok ? &quot;\u8a8d\u8a3c\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u753b\u9762\u3092\u9589\u3058\u3066\u304f\u3060\u3055\u3044\u3002&quot; : &quot;\u8a8d\u8a3c\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002&quot;);\n}\n<\/code><\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\">\u81ea\u4f5c\u95a2\u6570\u3067OAuth2\u306e\u8a2d\u5b9a\u3092\u8a18\u8ff0<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">\u8a8d\u8a3c\u7528\u30e9\u30a4\u30d6\u30e9\u30ea\uff08OAuth2\uff09\u3092GAS\u3067\u4f7f\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apps Script \u5de6\u30e1\u30cb\u30e5\u30fc\u300c\u30e9\u30a4\u30d6\u30e9\u30ea\u300d\u2192 \u300c+\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u300d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u306e\u30b9\u30af\u30ea\u30d7\u30c8ID\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u300c\u691c\u7d22\u300d<\/p>\n\n\n\n<ol class=\"wp-block-list is-style-num_circle\">\n<li>Apps Script \u5de6\u30e1\u30cb\u30e5\u30fc\u300c\u30e9\u30a4\u30d6\u30e9\u30ea\u300d\u2192 \u300c+\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u300d<\/li>\n\n\n\n<li>\u4ee5\u4e0b\u306e\u30b9\u30af\u30ea\u30d7\u30c8ID\u3092\u8cbc\u308a\u4ed8\u3051\u3066\u300c\u691c\u7d22\u300d<\/li>\n<\/ol>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF<\/code><\/pre><\/div>\n\n\n\n<figure class=\"wp-block-image size-full is-style-border\"><img decoding=\"async\" width=\"514\" height=\"357\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h59_16.png\" alt=\"\u30e9\u30a4\u30d6\u30e9\u30ea\u8ffd\u52a0\u6b04\u306b\u6307\u5b9a\u306e\u30b9\u30af\u30ea\u30d7\u30c8ID\u3092\u5165\u529b\u3057\u305f\u753b\u9762\u3002\" class=\"wp-image-27258\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h59_16.png 514w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h59_16-382x265.png 382w\" sizes=\"(max-width: 514px) 100vw, 514px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u30e9\u30a4\u30d6\u30e9\u30ea\u540d\u306f\u305d\u306e\u307e\u307e <code>OAuth2<\/code> \u3067OK\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u6700\u65b0\u3092\u9078\u3073\u3001\u300c\u8ffd\u52a0\u300d\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"531\" height=\"502\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h59_51.png\" alt=\"\u30e9\u30a4\u30d6\u30e9\u30ea\u306bOAuth2\u3092\u8ffd\u52a0\u3057\u305f\u8a2d\u5b9a\u753b\u9762\u3002\" class=\"wp-image-27259\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h59_51.png 531w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_22h59_51-382x361.png 382w\" sizes=\"(max-width: 531px) 100vw, 531px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u3042\u3068\u306f\u5b9f\u969b\u306e\u30dd\u30b9\u30c8\u306e\u30b3\u30fc\u30c9\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>function postXThread() {\n  const lock = LockService.getScriptLock();\n  if (!lock.tryLock(1000)) return;\n  try {\n    const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(&quot;\u30b7\u30fc\u30c81&quot;);\n    if (!sheet) throw new Error(&quot;\u30b7\u30fc\u30c81\u304c\u3042\u308a\u307e\u305b\u3093&quot;);\n    const data = sheet.getDataRange().getValues();\n    const service = getService();\n    if (!service.hasAccess()) throw new Error(&quot;\u5b9f\u884c\u30e6\u30fc\u30b6\u30fc\u306eX\u8a8d\u8a3c\u304c\u5fc5\u8981\u3067\u3059&quot;);\n    for (let i = 1; i &lt; data.length; i++) {\n      const [title, url, body, postText, postedDate, firstId, secondId, state] = data[i];\n      if (postedDate || state !== &quot;READY&quot;) continue;\n      if (typeof postText !== &quot;string&quot; || !postText.trim() || !\/^https:\\\/\\\/\/.test(String(url))) {\n        throw new Error(&quot;\u672c\u6587\u307e\u305f\u306fURL\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044&quot;);\n      }\n      const row = i + 1;\n      let parentId = String(firstId || &quot;&quot;);\n      const ids = [String(firstId || &quot;&quot;), String(secondId || &quot;&quot;)];\n      if (ids[1] &amp;&amp; !ids[0]) throw new Error(&quot;\u6295\u7a3fID\u306e\u7d44\u5408\u305b\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044&quot;);\n      const texts = [postText.trim(), `${title} ${url}`.trim()];\n      for (let j = 0; j &lt; 2; j++) {\n        if (ids[j]) continue;\n        sheet.getRange(row, 8).setValue(&quot;SENDING_&quot; + (j + 1));\n        SpreadsheetApp.flush();\n        \/\/ \u9001\u4fe1\u5f8c\u306b\u5fdc\u7b54\u30fb\u4fdd\u5b58\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u3082\u3001\u81ea\u52d5\u3067\u306f\u518d\u9001\u3057\u306a\u3044\u3002\n        const payload = {text: texts[j]};\n        if (parentId) payload.reply = {in_reply_to_tweet_id: parentId};\n        const response = UrlFetchApp.fetch(&quot;https:\/\/api.x.com\/2\/tweets&quot;, {\n          method: &quot;post&quot;, contentType: &quot;application\/json&quot;,\n          headers: {Authorization: &quot;Bearer &quot; + service.getAccessToken()},\n          payload: JSON.stringify(payload), muteHttpExceptions: true\n        });\n        const status = response.getResponseCode();\n        if (status &lt; 200 || status &gt;= 300) throw new Error(&quot;X HTTP &quot; + status + &quot;: \u6295\u7a3f\u72b6\u6cc1\u3092\u624b\u52d5\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044&quot;);\n        const result = JSON.parse(response.getContentText());\n        const id = result.data?.id;\n        if (typeof id !== &quot;string&quot; || !\/^\\d+$\/.test(id)) throw new Error(&quot;\u6295\u7a3fID\u3092\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093&quot;);\n        sheet.getRange(row, 6 + j).setNumberFormat(&quot;@&quot;).setValue(id);\n        SpreadsheetApp.flush();\n        parentId = id;\n      }\n      sheet.getRange(row, 5).setValue(new Date()).setNumberFormat(&quot;yyyy\/MM\/dd HH:mm&quot;);\n      sheet.getRange(row, 8).setValue(&quot;DONE&quot;);\n      SpreadsheetApp.flush();\n      return;\n    }\n  } finally {\n    lock.releaseLock();\n  }\n}\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">D\u5217\u306e\u6295\u7a3f\u6587\u3068B\u5217\u306eURL\u3092\u78ba\u8a8d\u3057\u3001\u6295\u7a3f\u3059\u308b\u884c\u3060\u3051H\u5217\u3092<code>READY<\/code>\u306b\u3057\u3066\u304b\u3089\u3001<code>postXThread()<\/code>\u3092\u624b\u52d5\u5b9f\u884c\u3059\u308b\u624b\u9806\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b9f\u884c\u3059\u308b\u3068X\u3078\u306e\u5916\u90e8\u9001\u4fe1\u304c\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u306e\u5b9f\u884c\u753b\u9762\u306f\u65e7\u7248\u306e\u8a18\u9332\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-border\"><img decoding=\"async\" width=\"812\" height=\"524\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h16_33-812x524.png\" alt=\"\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u3066\u6295\u7a3f\u51e6\u7406\u3092\u884c\u3063\u305f\u7d50\u679c\u306e\u753b\u9762\u3002\" class=\"wp-image-27268\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h16_33-812x524.png 812w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h16_33-382x246.png 382w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h16_33-768x495.png 768w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h16_33.png 924w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0b\u306f\u65e7\u7248\u3067\u306e\u6295\u7a3f\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306e\u6539\u8a02\u7248\u3067\u5b9f\u6295\u7a3f\u304c\u6210\u529f\u3057\u305f\u8a3c\u62e0\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"603\" height=\"640\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-04_23h33_33.png\" alt=\"\u5b9f\u969b\u306bX\u3078\u81ea\u52d5\u6295\u7a3f\u3055\u308c\u305f\u6295\u7a3f\u753b\u9762\u3002\" class=\"wp-image-27250\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-04_23h33_33.png 603w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-04_23h33_33-382x405.png 382w\" sizes=\"(max-width: 603px) 100vw, 603px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u8a8d\u8a3c\u3068\u624b\u52d5\u5b9f\u884c\u3092\u81ea\u5206\u306e\u74b0\u5883\u3067\u78ba\u8a8d\u3057\u305f\u5f8c\u306b\u3001<code>postXThread()<\/code>\u306e\u6642\u9593\u4e3b\u5c0e\u578b\u30c8\u30ea\u30ac\u30fc\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u63b2\u8f09\u30b3\u30fc\u30c9\u306f1\u56de\u306e\u5b9f\u884c\u3067\u6700\u521d\u306e\u5bfe\u8c61\u884c\u30921\u884c\u51e6\u7406\u3057\u3001H\u5217\u304c<code>READY<\/code>\u3067\u306a\u3044\u884c\u306f\u6295\u7a3f\u3057\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list is-style-num_circle\">\n<li>GAS\u30e1\u30cb\u30e5\u30fc\u300c\u6642\u8a08\u30de\u30fc\u30af\u300d\uff08\u30c8\u30ea\u30ac\u30fc\uff09\u3092\u30af\u30ea\u30c3\u30af<\/li>\n\n\n\n<li>\u300c\u65b0\u3057\u3044\u30c8\u30ea\u30ac\u30fc\u3092\u8ffd\u52a0\u300d<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u95a2\u6570\uff1a<code>postXThread<\/code><\/li>\n\n\n\n<li>\u30a4\u30d9\u30f3\u30c8\u306e\u7a2e\u985e\uff1a\u6642\u9593\u4e3b\u5c0e\u578b<\/li>\n\n\n\n<li>\u5b9f\u884c\u30bf\u30a4\u30df\u30f3\u30b0\uff1a\u65e5\u4ed8\u30d9\u30fc\u30b9\u306e\u30bf\u30a4\u30de\u30fc \u2192 \u5348\u524d\u25ef\u6642\uff08\u4efb\u610f\uff09<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8a8d\u8a3c\u3068\u624b\u52d5\u5b9f\u884c\u306e\u691c\u8a3c\u304c\u6e08\u307f\u3001READY\u306b\u3057\u305f\u884c\u304c\u3042\u308b\u5834\u5408\u306b\u51e6\u7406\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6642\u9593\u4e3b\u5c0e\u578b\u30c8\u30ea\u30ac\u30fc\u306e\u5b9f\u884c\u6642\u523b\u306b\u306f\u5e45\u304c\u3042\u308a\u3001\u5206\u5358\u4f4d\u306e\u5b9a\u523b\u5b9f\u884c\u306f\u4fdd\u8a3c\u3055\u308c\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-border\"><img decoding=\"async\" width=\"812\" height=\"236\" src=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h16_43-812x236.png\" alt=\"\u6642\u9593\u4e3b\u5c0e\u578b\u3067\u81ea\u52d5\u6295\u7a3f\u3092\u884c\u3046\u305f\u3081\u306e\u30c8\u30ea\u30ac\u30fc\u8a2d\u5b9a\u753b\u9762\u3002\" class=\"wp-image-27269\" srcset=\"https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h16_43-812x236.png 812w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h16_43-382x111.png 382w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h16_43-768x223.png 768w, https:\/\/motoki-design.co.jp\/wordpress\/wp-content\/uploads\/2025-08-06_23h16_43.png 924w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0a\u3067\u3059\u3002<\/p>\n\n\n\n\n\n<p class=\"wp-block-paragraph\">GitHub\u306e<a href=\"https:\/\/github.com\/MOTOKI-LLC\/WAZA-code\/tree\/main\/gas-chatgpt-x-sns-post\">MOTOKI-LLC\/WAZA-code<\/a>\u306f\u904e\u53bb\u306e\u4fdd\u7ba1\u7248\u3067\u3001\u3053\u306e\u8a18\u4e8b\u306e\u6539\u8a02\u30b3\u30fc\u30c9\u3068\u306f\u540c\u671f\u3057\u3066\u3044\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E\u5217\u306f\u5b8c\u4e86\u65e5\u3001F\u5217\u306f1\u4ef6\u76ee\u306e\u6295\u7a3fID\u3001G\u5217\u306f2\u4ef6\u76ee\u306e\u6295\u7a3fID\u3001H\u5217\u306f\u72b6\u614b\u3068\u3057\u3066\u4f7f\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u30fbG\u5217\u306f\u6700\u521d\u304b\u3089\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u8a2d\u5b9a\u3057\u3001\u6295\u7a3f\u4e2d\u306f\u884c\u306e\u4e26\u3079\u66ff\u3048\u3084\u672c\u6587\u7de8\u96c6\u3092\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">READY\u306f\u672c\u6587\u30fbURL\u30fbX\u306e\u6587\u5b57\u6570\u5236\u9650\u3092\u4eba\u304c\u78ba\u8a8d\u3057\u305f\u884c\u3060\u3051\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SENDING_1\/2\u3067\u6b62\u307e\u3063\u305f\u3089X\u4e0a\u306e\u6295\u7a3f\u3092\u78ba\u8a8d\u3057\u3001\u6210\u529f\u6e08\u307f\u306eID\u3092F\/G\u3078\u8a18\u9332\u3057\u3066\u304b\u3089\u518d\u958b\u3092\u5224\u65ad\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u72b6\u614b\u3092\u78ba\u8a8d\u305b\u305aREADY\u3078\u623b\u3059\u3068\u91cd\u8907\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8907\u6570\u306eGAS\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u540c\u3058\u30b7\u30fc\u30c8\u3078\u63a5\u7d9a\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n<p class=\"wp-block-paragraph\">\u516c\u958b\u672c\u6587\u3067\u3082\u3001\u30d1\u30b9\u30ef\u30fc\u30c9\u4fdd\u8b77\u8a18\u4e8b\u3084\u975e\u516c\u958b\u90e8\u5206\u3092\u542b\u3080\u5143\u30c7\u30fc\u30bf\u306f\u5916\u90e8API\u3078\u6e21\u3055\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CSV\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u4ed8\u304d\u8a18\u4e8b\u3068codoc\u3068\u3044\u3046\u6587\u5b57\u5217\u3092\u542b\u3080\u8a18\u4e8b\u3092\u9664\u5916\u3057\u3001\u6570\u5f0f\u3068\u3057\u3066\u89e3\u91c8\u3055\u308c\u5f97\u308b\u5148\u982d\u6587\u5b57\u3092\u7121\u5bb3\u5316\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305f\u3060\u3057\u4ed6\u65b9\u5f0f\u306e\u4f1a\u54e1\u9650\u5b9a\u8a18\u4e8b\u306a\u3069\u3092\u7db2\u7f85\u3059\u308b\u5224\u5b9a\u3067\u306f\u306a\u3044\u306e\u3067\u3001\u51fa\u529b\u3092\u78ba\u8a8d\u3057\u3066\u516c\u958b\u53ef\u80fd\u306a\u884c\u3060\u3051\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5927\u91cf\u8a18\u4e8b\u306e\u5206\u5272\u51fa\u529b\u306f\u672a\u5b9f\u88c5\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u65e7GitHub\u4f8b\u306f\u540c\u671f\u3057\u3066\u3044\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8a8d\u8a3c\u4ed5\u69d8\u306f<a href=\"https:\/\/github.com\/googleworkspace\/apps-script-oauth2\">Google\u306eOAuth2\u30e9\u30a4\u30d6\u30e9\u30ea<\/a>\u3001\u5fdc\u7b54\u5f62\u5f0f\u306f<a href=\"https:\/\/developers.openai.com\/api\/docs\/guides\/migrate-to-responses\">OpenAI\u516c\u5f0f\u8cc7\u6599<\/a>\u3001\u6295\u7a3f\u5f62\u5f0f\u306f<a href=\"https:\/\/docs.x.com\/x-api\/posts\/create-post\">X\u516c\u5f0f\u8cc7\u6599<\/a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>2026\u5e7410\u67081\u65e5\u6539\u8a02\uff1a\u751f\u6210\u5931\u6557\u306e\u6587\u8a00\u3092\u6295\u7a3f\u3057\u306a\u3044\u3088\u3046\u3001API\u30a8\u30e9\u30fc\u6642\u306f\u505c\u6b62\u3059\u308b\u5b9f\u88c5\u306b\u5909\u66f4\u3057\u307e\u3057\u305f\u3002 \u6295\u7a3f\u306fH\u5217\u3092READY\u306b\u3057\u305f\u78ba\u8a8d\u6e08\u307f\u306e\u884c\u3060\u3051\u304c\u5bfe\u8c61\u3067\u3059\u3002 F\u5217\u30fbG\u5217\u306b\u5404\u6295\u7a3fID\u3092\u6587\u5b57\u5217\u3067\u4fdd\u5b58\u3057\u3001\u9014\u4e2d\u5931\u6557\u6642\u306f\u81ea\u52d5\u518d [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":27271,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","book_review_data":"","footnotes":"","ssp_meta_title":"WordPress\u8a18\u4e8b\u3092\u8981\u7d04\u3057X\u3078\u81ea\u52d5\u6295\u7a3f\u3059\u308bGAS\u5b9f\u88c5","ssp_meta_description":"WordPress\u8a18\u4e8b\u3092ChatGPT\u3067\u8981\u7d04\u3057\u3001GAS\u3068OAuth2\u3067X\u3078\u30b9\u30ec\u30c3\u30c9\u5f62\u5f0f\uff082\u30c4\u30a4\u30fc\u30c8\uff09\u81ea\u52d5\u6295\u7a3f\u3059\u308b\u624b\u9806\u3092\u89e3\u8aac\u3002functions.php\u3067\u306eCSV\u51fa\u529b\u304b\u3089\u3001\u7121\u6599\u306e\u958b\u767a\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u767b\u9332\u3084API\u9023\u643a\u306e\u8a2d\u5b9a\u307e\u3067\u5206\u304b\u308a\u307e\u3059\u3002"},"categories":[83],"tags":[],"area":[],"class_list":["post-27244","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tools"],"_links":{"self":[{"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/posts\/27244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/comments?post=27244"}],"version-history":[{"count":7,"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/posts\/27244\/revisions"}],"predecessor-version":[{"id":30812,"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/posts\/27244\/revisions\/30812"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/media\/27271"}],"wp:attachment":[{"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/media?parent=27244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/categories?post=27244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/tags?post=27244"},{"taxonomy":"area","embeddable":true,"href":"https:\/\/motoki-design.co.jp\/wordpress\/wp-json\/wp\/v2\/area?post=27244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}