{"id":20318,"date":"2025-11-12T12:39:58","date_gmt":"2025-11-12T03:39:58","guid":{"rendered":"https:\/\/ardent.jp\/rentoffice-consultation-center\/?p=20318"},"modified":"2025-12-17T12:19:51","modified_gmt":"2025-12-17T03:19:51","slug":"chatgpt-jire-weeklyreport","status":"publish","type":"post","link":"https:\/\/ardent.jp\/rentoffice-consultation-center\/costdown\/ai-robot\/chatgpt-jire-weeklyreport\/","title":{"rendered":"chatGPT\u6d3b\u7528\u4e8b\u4f8b\u300c\u696d\u754c\u306e\u6700\u65b0\u60c5\u5831\u3092\u53d6\u5f97\u3002\u30ec\u30dd\u30fc\u30c8\u3092\u6bce\u9031\u5168\u54e1\u306b\u914d\u4fe1\u300d"},"content":{"rendered":"<p data-start=\"173\" data-end=\"285\">\u4e2d\u5c0f\u4f01\u696d\u306e\u7d4c\u55b6\u8005\u3084\u62c5\u5f53\u8005\u306b\u3068\u3063\u3066\u3001\u696d\u754c\u306e\u6700\u65b0\u60c5\u5831\u3092\u5b9a\u671f\u7684\u306b\u30c1\u30a7\u30c3\u30af\u3059\u308b\u3053\u3068\u306f\u91cd\u8981\u3067\u3059\u3088\u306d\u3002<\/p>\n<p data-start=\"292\" data-end=\"416\">\u305f\u3060\u3001\u7a4d\u6975\u7684\u306b\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u30b9\u30bf\u30c3\u30d5\u3082\u3044\u308c\u3070\u305d\u3046\u3067\u306a\u3044\u4eba\u3082\u3067\u3066\u304d\u3066\u3001\u60c5\u5831\u306e\u84c4\u7a4d\u306b\u3070\u3089\u3064\u304d\u304c\u3067\u3066\u304d\u307e\u3059\u3002<\/p>\n<p data-start=\"292\" data-end=\"416\">\u307e\u305f\u3001\u5fd9\u3057\u304f\u3066\u3001\u6700\u65b0\u60c5\u5831\u3092\u5b9a\u671f\u7684\u306b\u30c1\u30a7\u30c3\u30af\u304c\u3067\u304d\u3066\u3044\u306a\u3044\u3068\u3044\u3046\u30b1\u30fc\u30b9\u3082\u3042\u308b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p data-start=\"292\" data-end=\"416\">\u4eca\u56de\u306f\u3001chatGPT\u306e\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u3001\u6bce\u9031\u696d\u754c\u306e\u6700\u65b0\u60c5\u5831\u3092\u53d6\u5f97\u3002<\/p>\n<p data-start=\"292\" data-end=\"416\">\u305d\u306e\u30ec\u30dd\u30fc\u30c8\u3092\u914d\u4fe1\u3057\u305f\u4e8b\u4f8b\u3092\u3054\u7d39\u4ecb\u3057\u307e\u3059\uff01<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_77 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u76ee\u6b21<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/costdown\/ai-robot\/chatgpt-jire-weeklyreport\/#IT%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E4%BE%A1%E6%A0%BC%E5%A4%89%E6%9B%B4%E3%82%92%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%AA%E3%83%BC%E3%81%AB%E6%8A%8A%E6%8F%A1%E3%81%97%E3%81%9F%E3%81%84\" >IT\u30c4\u30fc\u30eb\u306e\u4fa1\u683c\u5909\u66f4\u3092\u30bf\u30a4\u30e0\u30ea\u30fc\u306b\u628a\u63e1\u3057\u305f\u3044<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/costdown\/ai-robot\/chatgpt-jire-weeklyreport\/#%E6%A7%8B%E6%88%90%E5%9B%B3\" >\u69cb\u6210\u56f3<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/costdown\/ai-robot\/chatgpt-jire-weeklyreport\/#%E8%AA%BF%E6%9F%BB%E7%B5%90%E6%9E%9C%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E4%BE%8B\" >\u8abf\u67fb\u7d50\u679c\u30ec\u30dd\u30fc\u30c8\u4f8b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/costdown\/ai-robot\/chatgpt-jire-weeklyreport\/#%E3%81%AA%E3%81%9C%E3%80%81chatGPT%E3%81%AE%E3%82%BF%E3%82%B9%E3%82%AF%E3%81%A0%E3%81%91%E3%81%A7%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B%EF%BC%9F\" >\u306a\u305c\u3001chatGPT\u306e\u30bf\u30b9\u30af\u3060\u3051\u3067\u306a\u3044\u306e\u304b\uff1f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/costdown\/ai-robot\/chatgpt-jire-weeklyreport\/#%E2%91%A0%E8%87%AA%E5%88%86%E3%81%AE%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AB%E5%B1%8A%E3%81%8F\" >\u2460\u81ea\u5206\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u5c4a\u304f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/costdown\/ai-robot\/chatgpt-jire-weeklyreport\/#%E2%91%A1%E3%83%A1%E3%83%BC%E3%83%AB%E6%9C%AC%E6%96%87%E3%81%AB%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E5%86%85%E5%AE%B9%E3%82%92%E6%9B%B8%E3%81%91%E3%81%AA%E3%81%84\" >\u2461\u30e1\u30fc\u30eb\u672c\u6587\u306b\u30ec\u30dd\u30fc\u30c8\u5185\u5bb9\u3092\u66f8\u3051\u306a\u3044<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/costdown\/ai-robot\/chatgpt-jire-weeklyreport\/#GAS%C3%97chatGPT_%E3%81%AB%E3%82%88%E3%82%8B%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E5%B0%8E%E5%85%A5%E3%81%AE%E5%8A%B9%E6%9E%9C%EF%BC%9A%E5%85%A8%E5%93%A1%E3%81%AB%E5%90%8C%E3%81%98%E3%82%BF%E3%82%A4%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E6%9C%80%E6%96%B0%E6%83%85%E5%A0%B1%E3%81%8C%E5%B1%8A%E3%81%8F\" >GAS\u00d7chatGPT \u306b\u3088\u308b\u30ec\u30dd\u30fc\u30c8\u5c0e\u5165\u306e\u52b9\u679c\uff1a\u5168\u54e1\u306b\u540c\u3058\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u6700\u65b0\u60c5\u5831\u304c\u5c4a\u304f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/costdown\/ai-robot\/chatgpt-jire-weeklyreport\/#%E3%80%90%E7%95%AA%E5%A4%96%E7%B7%A8%E3%80%91ChatGPT%E3%81%AB%E3%82%88%E3%82%8B%E6%8E%A1%E7%94%A8%E6%B4%BB%E5%8B%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6\" >\u3010\u756a\u5916\u7de8\u3011ChatGPT\u306b\u3088\u308b\u63a1\u7528\u6d3b\u52d5\u306b\u3064\u3044\u3066<\/a><\/li><\/ul><\/nav><\/div>\n<h2 data-start=\"292\" data-end=\"416\"><span class=\"ez-toc-section\" id=\"IT%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E4%BE%A1%E6%A0%BC%E5%A4%89%E6%9B%B4%E3%82%92%E3%82%BF%E3%82%A4%E3%83%A0%E3%83%AA%E3%83%BC%E3%81%AB%E6%8A%8A%E6%8F%A1%E3%81%97%E3%81%9F%E3%81%84\"><\/span>IT\u30c4\u30fc\u30eb\u306e\u4fa1\u683c\u5909\u66f4\u3092\u30bf\u30a4\u30e0\u30ea\u30fc\u306b\u628a\u63e1\u3057\u305f\u3044<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p data-start=\"292\" data-end=\"416\">\u5f0a\u793e\u306f\u3001\u8a33100\u500b\u306eIT\u30c4\u30fc\u30eb\u3092\u8ca9\u58f2\u3057\u3066\u3044\u3066\u3001\u5404\u793e\u5024\u4e0a\u3052\u304c\u6700\u8fd1\u306f\u6fc0\u3057\u3044\u3067\u3059\u3002<\/p>\n<p data-start=\"292\" data-end=\"416\">\u6bce\u5e74\u3069\u3053\u304b\u304c\u3001\u5024\u4e0a\u3052\u3092\u3057\u3066\u3044\u308b\u306e\u3067\u3059\u304c\u3001\u305d\u308c\u3092\u4ee3\u7406\u5e97\u306b\u304d\u3061\u3093\u3068\u914d\u4fe1\u3057\u3066\u304f\u308c\u306a\u3044\u30d9\u30f3\u30c0\u30fc\u3055\u3093\u304c\u3044\u305f\u308a\u3057\u307e\u3059\u3002<\/p>\n<p data-start=\"292\" data-end=\"416\">\u3053\u308c\u3092\u81ea\u52d5\u5316\u3067\u304d\u306a\u3044\u304b\u3068\u8003\u3048\u307e\u3057\u3066\u3001<\/p>\n<p data-start=\"292\" data-end=\"416\">chatGPT\u3068GAS\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u5b9f\u73fe\u3057\u307e\u3057\u305f\u306e\u3067\u3001<\/p>\n<p data-start=\"292\" data-end=\"416\">\u305d\u306e\u3084\u308a\u65b9\u3092\u5171\u6709\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3059\uff01<\/p>\n<h2 data-start=\"292\" data-end=\"416\"><span class=\"ez-toc-section\" id=\"%E6%A7%8B%E6%88%90%E5%9B%B3\"><\/span>\u69cb\u6210\u56f3<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p data-start=\"292\" data-end=\"416\"><img decoding=\"async\" data-src=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-123805.png\" alt=\"\u4ed5\u7d44\u307f\u306e\u69cb\u6210\u56f3\" width=\"779\" height=\"143\" class=\"aligncenter size-full wp-image-20319 lazyload\" data-srcset=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-123805.png 779w, https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-123805-300x55.png 300w, https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-123805-768x141.png 768w\" data-sizes=\"(max-width: 779px) 100vw, 779px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 779px; --smush-placeholder-aspect-ratio: 779\/143;\" \/><\/p>\n<p data-start=\"292\" data-end=\"416\">\u4eca\u56de\u306e\u4ed5\u7d44\u307f\u306f\u4e0a\u8a184\u30b9\u30c6\u30c3\u30d7\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p data-start=\"292\" data-end=\"416\">\u5b9f\u969b\u306eGAS\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3053\u3061\u3089<\/p>\n<blockquote>\n<div>\n<div><span>const<\/span><span> <\/span><span>CONF<\/span><span> = {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>TZ<\/span><span>: <\/span><span>&#8216;Asia\/Tokyo&#8217;<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 <\/span><span>DAYS<\/span><span>: <\/span><span>7<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 <\/span><span>TO<\/span><span>: <\/span><span>PropertiesService<\/span><span>.<\/span><span>getScriptProperties<\/span><span>().<\/span><span>getProperty<\/span><span>(<\/span><span>&#8216;TO&#8217;<\/span><span>) || <\/span><span>&#8216;\u3053\u3053\u306b\u30e1\u30fc\u30eb\u3092\u3044\u308c\u308b&#8217;<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 <\/span><span>SUBJECT_PREFIX<\/span><span>: <\/span><span>&#8216;\u3010\u9031\u6b21\u3011IT\u30c4\u30fc\u30eb\u6700\u65b0\u60c5\u5831\uff08\u81ea\u52d5\u53ce\u96c6\uff09&#8217;<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 <\/span><span>SHEET_NAME<\/span><span>: <\/span><span>&#8216;Tools&#8217;<\/span><span>, <\/span><span>\/\/ 1\u5217\u76ee\u306b\u30c4\u30fc\u30eb\u540d<\/span><\/div>\n<div><span>\u00a0 <\/span><span>MAX_PER_TOOL<\/span><span>: <\/span><span>5<\/span><span>, \u00a0 \u00a0 <\/span><span>\/\/ \u30c4\u30fc\u30eb\u3054\u3068\u306e\u6700\u5927\u5019\u88dc<\/span><\/div>\n<div><span>};<\/span><\/div>\n<div><span>\/\/ A\u5217=\u30c4\u30fc\u30eb\u540d\u3001B\u5217=\u30e1\u30fc\u30ab\u30fc\u540d \u307e\u305f\u306f \u516c\u5f0f\u30c9\u30e1\u30a4\u30f3\uff08\u3069\u3061\u3089\u3067\u3082\u53ef\uff09<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>getToolsAndMakers<\/span><span>(<\/span><span>name<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>ss<\/span><span> = <\/span><span>SpreadsheetApp<\/span><span>.<\/span><span>getActiveSpreadsheet<\/span><span>();<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>sh<\/span><span> = <\/span><span>ss<\/span><span>.<\/span><span>getSheetByName<\/span><span>(<\/span><span>name<\/span><span>) || <\/span><span>ss<\/span><span>.<\/span><span>insertSheet<\/span><span>(<\/span><span>name<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>last<\/span><span> = <\/span><span>Math<\/span><span>.<\/span><span>max<\/span><span>(<\/span><span>1<\/span><span>, <\/span><span>sh<\/span><span>.<\/span><span>getLastRow<\/span><span>());<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>values<\/span><span> = <\/span><span>sh<\/span><span>.<\/span><span>getRange<\/span><span>(<\/span><span>1<\/span><span>, <\/span><span>1<\/span><span>, <\/span><span>last<\/span><span>, <\/span><span>2<\/span><span>).<\/span><span>getValues<\/span><span>(); <\/span><span>\/\/ 2\u5217\u53d6\u5f97<\/span><\/div>\n<div><span>\u00a0 <\/span><span><\/span><span><\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>isDomainLike<\/span><span>(<\/span><span>s<\/span><span>){ <\/span><span>return<\/span><span> <\/span><span>\/\\.\/<\/span><span>.<\/span><span>test<\/span><span>(<\/span><span>s<\/span><span>) &amp;&amp; !<\/span><span>\/\\s\/<\/span><span>.<\/span><span>test<\/span><span>(<\/span><span>s<\/span><span>); }<\/span><\/div>\n<div><span>\/\/ \u4fa1\u683c\u7cfb\u30ad\u30fc\u30ef\u30fc\u30c9\uff08\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u8ffd\u52a0\u53ef\uff09<\/span><\/div>\n<div><span>const<\/span><span> <\/span><span>PRICE_TERMS<\/span><span> = <\/span><span>&#8216;(\u4fa1\u683c OR \u6599\u91d1 OR \u5024\u4e0a\u3052 OR \u5024\u4e0b\u3052 OR \u4fa1\u683c\u6539\u5b9a OR price OR pricing OR cost)&#8217;<\/span><span>;<\/span><\/div>\n<div><span>\/\/ \u66f4\u65b0\/\u30d7\u30e9\u30f3\u7cfb\uff08\u53b3\u3057\u3081\u691c\u7d22\u3067\u4f7f\u7528\uff09<\/span><\/div>\n<div><span>const<\/span><span> <\/span><span>UPDATE_TERMS<\/span><span> = <\/span><span>&#8216;(release notes OR changelog OR &#8220;what\\\\\\&#8217;s new&#8221; OR \u66f4\u65b0\u60c5\u5831 OR \u5909\u66f4\u70b9 OR \u30d7\u30e9\u30f3 OR plan)&#8217;<\/span><span>;<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>buildQueryStrict<\/span><span>(<\/span><span>tool<\/span><span>, <\/span><span>maker<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>toolQ<\/span><span> \u00a0= <\/span><span>`&#8221;<\/span><span>${<\/span><span>tool<\/span><span>}<\/span><span>&#8220;`<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>makerQ<\/span><span> = <\/span><span>maker<\/span><span> ? (<\/span><span>isDomainLike<\/span><span>(<\/span><span>maker<\/span><span>) ? <\/span><span>`site:<\/span><span>${<\/span><span>maker<\/span><span>}<\/span><span>`<\/span><span> : <\/span><span>`&#8221;<\/span><span>${<\/span><span>maker<\/span><span>}<\/span><span>&#8220;`<\/span><span>) : <\/span><span>&#8221;<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>\/\/ \u30c4\u30fc\u30eb AND \u30e1\u30fc\u30ab\u30fc(\u307e\u305f\u306fsite:) AND \u4fa1\u683c\u8a9e AND \u66f4\u65b0\u8a9e<\/span><\/div>\n<div><span>\u00a0 <\/span><span>return<\/span><span> [<\/span><span>toolQ<\/span><span>, <\/span><span>makerQ<\/span><span>, <\/span><span>PRICE_TERMS<\/span><span>, <\/span><span>UPDATE_TERMS<\/span><span>].<\/span><span>filter<\/span><span>(<\/span><span>Boolean<\/span><span>).<\/span><span>join<\/span><span>(<\/span><span>&#8216; &#8216;<\/span><span>);<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>buildQueryFallback<\/span><span>(<\/span><span>tool<\/span><span>, <\/span><span>maker<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>toolQ<\/span><span> \u00a0= <\/span><span>`&#8221;<\/span><span>${<\/span><span>tool<\/span><span>}<\/span><span>&#8220;`<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>makerQ<\/span><span> = <\/span><span>maker<\/span><span> ? (<\/span><span>isDomainLike<\/span><span>(<\/span><span>maker<\/span><span>) ? <\/span><span>`site:<\/span><span>${<\/span><span>maker<\/span><span>}<\/span><span>`<\/span><span> : <\/span><span>`&#8221;<\/span><span>${<\/span><span>maker<\/span><span>}<\/span><span>&#8220;`<\/span><span>) : <\/span><span>&#8221;<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>\/\/ \u66f4\u65b0\u8a9e\u3092\u5916\u3057\u3066\u5c11\u3057\u5e83\u3052\u308b\uff08\u4fa1\u683c\u8a9e\u306f\u6b8b\u3059\uff09<\/span><\/div>\n<div><span>\u00a0 <\/span><span>return<\/span><span> [<\/span><span>toolQ<\/span><span>, <\/span><span>makerQ<\/span><span>, <\/span><span>PRICE_TERMS<\/span><span>].<\/span><span>filter<\/span><span>(<\/span><span>Boolean<\/span><span>).<\/span><span>join<\/span><span>(<\/span><span>&#8216; &#8216;<\/span><span>);<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>weeklyItUpdates<\/span><span>() {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>tz<\/span><span> = <\/span><span>CONF<\/span><span>.<\/span><span>TZ<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>today<\/span><span> = <\/span><span>new<\/span><span> <\/span><span>Date<\/span><span>(<\/span><span>new<\/span><span> <\/span><span>Date<\/span><span>().<\/span><span>toLocaleString<\/span><span>(<\/span><span>&#8216;en-US&#8217;<\/span><span>,{ <\/span><span>timeZone<\/span><span>: <\/span><span>tz<\/span><span> }));<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>since<\/span><span> = <\/span><span>new<\/span><span> <\/span><span>Date<\/span><span>(<\/span><span>today<\/span><span>); <\/span><span>since<\/span><span>.<\/span><span>setDate<\/span><span>(<\/span><span>since<\/span><span>.<\/span><span>getDate<\/span><span>() &#8211; <\/span><span>CONF<\/span><span>.<\/span><span>DAYS<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>runId<\/span><span> = <\/span><span>Utilities<\/span><span>.<\/span><span>formatDate<\/span><span>(<\/span><span>today<\/span><span>, <\/span><span>tz<\/span><span>, <\/span><span>&#8220;yyyy-MM-dd&#8217;T&#8217;HH:mm:ss&#8221;<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>logRow<\/span><span>(<\/span><span>&#8216;INFO&#8217;<\/span><span>, <\/span><span>runId<\/span><span>, <\/span><span>&#8216;weeklyItUpdates start&#8217;<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>pairs<\/span><span> = <\/span><span>getToolsAndMakers<\/span><span>(<\/span><span>CONF<\/span><span>.<\/span><span>SHEET_NAME<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>logRow<\/span><span>(<\/span><span>&#8216;INFO&#8217;<\/span><span>, <\/span><span>runId<\/span><span>, <\/span><span>&#8216;tools loaded&#8217;<\/span><span>, <\/span><span>`count=<\/span><span>${<\/span><span>pairs<\/span><span>.<\/span><span>length<\/span><span>}<\/span><span>; first5=<\/span><span>${<\/span><span>pairs<\/span><span>.<\/span><span>slice<\/span><span>(<\/span><span>0<\/span><span>,<\/span><span>5<\/span><span>).<\/span><span>map<\/span><span>(<\/span><span>p<\/span><span>=&gt;<\/span><span>p<\/span><span>.<\/span><span>tool<\/span><span>).<\/span><span>join<\/span><span>(<\/span><span>&#8216;,&#8217;<\/span><span>)}<\/span><span>`<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>candidates<\/span><span> = [];<\/span><\/div>\n<div><span>\u00a0 <\/span><span>for<\/span><span> (<\/span><span>const<\/span><span> {<\/span><span>tool<\/span><span>, <\/span><span>maker<\/span><span>} <\/span><span>of<\/span><span> <\/span><span>pairs<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>\/\/ 1) \u53b3\u3057\u3081\u691c\u7d22<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>let<\/span><span> <\/span><span>q<\/span><span> = <\/span><span>buildQueryStrict<\/span><span>(<\/span><span>tool<\/span><span>, <\/span><span>maker<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>let<\/span><span> { <\/span><span>items<\/span><span>, <\/span><span>apiUrl<\/span><span>, <\/span><span>raw<\/span><span> } = <\/span><span>cseSearchWithUrl<\/span><span>(<\/span><span>q<\/span><span>, <\/span><span>&#8216;w1&#8217;<\/span><span>, <\/span><span>CONF<\/span><span>.<\/span><span>MAX_PER_TOOL<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>writeCandidates<\/span><span>(<\/span><span>runId<\/span><span>, <\/span><span>tool<\/span><span>, <\/span><span>q<\/span><span>, <\/span><span>apiUrl<\/span><span>, <\/span><span>items<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>writeRaw<\/span><span>(<\/span><span>runId<\/span><span>, <\/span><span>tool<\/span><span>, <\/span><span>q<\/span><span>, <\/span><span>raw<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>\/\/ 2) \u30d2\u30c3\u30c8\u304c\u5c11\u306a\u3044\u5834\u5408\u306f\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>if<\/span><span> (<\/span><span>items<\/span><span>.<\/span><span>length<\/span><span> === <\/span><span>0<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 <\/span><span>const<\/span><span> <\/span><span>q2<\/span><span> = <\/span><span>buildQueryFallback<\/span><span>(<\/span><span>tool<\/span><span>, <\/span><span>maker<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 <\/span><span>const<\/span><span> <\/span><span>r2<\/span><span> = <\/span><span>cseSearchWithUrl<\/span><span>(<\/span><span>q2<\/span><span>, <\/span><span>&#8216;w1&#8217;<\/span><span>, <\/span><span>CONF<\/span><span>.<\/span><span>MAX_PER_TOOL<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 <\/span><span>writeCandidates<\/span><span>(<\/span><span>runId<\/span><span>, <\/span><span>tool<\/span><span>, <\/span><span>q2<\/span><span>, <\/span><span>r2<\/span><span>.<\/span><span>apiUrl<\/span><span>, <\/span><span>r2<\/span><span>.<\/span><span>items<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 <\/span><span>writeRaw<\/span><span>(<\/span><span>runId<\/span><span>, <\/span><span>tool<\/span><span>, <\/span><span>q2<\/span><span>, <\/span><span>r2<\/span><span>.<\/span><span>raw<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 <\/span><span>items<\/span><span> = <\/span><span>r2<\/span><span>.<\/span><span>items<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 \u00a0 }<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>items<\/span><span>.<\/span><span>forEach<\/span><span>(<\/span><span>h<\/span><span> =&gt; <\/span><span>candidates<\/span><span>.<\/span><span>push<\/span><span>({ <\/span><span>tool<\/span><span>, &#8230;<\/span><span>h<\/span><span> }));<\/span><\/div>\n<div><span>\u00a0 }<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>screened<\/span><span> = <\/span><span>openaiScreenAndSummarize<\/span><span>(<\/span><span>candidates<\/span><span>, <\/span><span>since<\/span><span>, <\/span><span>tz<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>writeAccepted<\/span><span>(<\/span><span>runId<\/span><span>, <\/span><span>screened<\/span><span>.<\/span><span>accepted<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>html<\/span><span> = <\/span><span>buildHtml<\/span><span>(<\/span><span>screened<\/span><span>, <\/span><span>tz<\/span><span>, <\/span><span>since<\/span><span>, <\/span><span>today<\/span><span>) +<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>`&lt;p style=&#8221;color:#666&#8243;&gt;RunID: <\/span><span>${<\/span><span>runId<\/span><span>}<\/span><span> \/ Pairs: <\/span><span>${<\/span><span>pairs<\/span><span>.<\/span><span>length<\/span><span>}<\/span><span> \/ Candidates: <\/span><span>${<\/span><span>candidates<\/span><span>.<\/span><span>length<\/span><span>}<\/span><span> \/ Accepted: <\/span><span>${(<\/span><span>screened<\/span><span>.<\/span><span>accepted<\/span><span>||[]).<\/span><span>length<\/span><span>}<\/span><span>&lt;\/p&gt;`<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>subject<\/span><span> = <\/span><span>`<\/span><span>${<\/span><span>CONF<\/span><span>.<\/span><span>SUBJECT_PREFIX<\/span><span>}<\/span><span> <\/span><span>${<\/span><span>Utilities<\/span><span>.<\/span><span>formatDate<\/span><span>(<\/span><span>today<\/span><span>, <\/span><span>tz<\/span><span>, <\/span><span>&#8216;yyyy-MM-dd&#8217;<\/span><span>)}<\/span><span>`<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>GmailApp<\/span><span>.<\/span><span>sendEmail<\/span><span>(<\/span><span>CONF<\/span><span>.<\/span><span>TO<\/span><span>, <\/span><span>subject<\/span><span>, <\/span><span>&#8216;HTML\u7248\u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\u3002&#8217;<\/span><span>, { <\/span><span>htmlBody<\/span><span>: <\/span><span>html<\/span><span>, <\/span><span>name<\/span><span>: <\/span><span>&#8216;Weekly IT Updates Bot&#8217;<\/span><span> });<\/span><\/div>\n<div><span>\u00a0 <\/span><span>logRow<\/span><span>(<\/span><span>&#8216;INFO&#8217;<\/span><span>, <\/span><span>runId<\/span><span>, <\/span><span>&#8216;weeklyItUpdates done&#8217;<\/span><span>, <\/span><span>`pairs=<\/span><span>${<\/span><span>pairs<\/span><span>.<\/span><span>length<\/span><span>}<\/span><span>, candidates=<\/span><span>${<\/span><span>candidates<\/span><span>.<\/span><span>length<\/span><span>}<\/span><span>, accepted=<\/span><span>${(<\/span><span>screened<\/span><span>.<\/span><span>accepted<\/span><span>||[]).<\/span><span>length<\/span><span>}<\/span><span>`<\/span><span>);<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>cseSearchWithUrl<\/span><span>(<\/span><span>query<\/span><span>, <\/span><span>dateRestrict<\/span><span>, <\/span><span>maxResults<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>key<\/span><span> = <\/span><span>PropertiesService<\/span><span>.<\/span><span>getScriptProperties<\/span><span>().<\/span><span>getProperty<\/span><span>(<\/span><span>&#8216;CSE_API_KEY&#8217;<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>cx<\/span><span> \u00a0= <\/span><span>PropertiesService<\/span><span>.<\/span><span>getScriptProperties<\/span><span>().<\/span><span>getProperty<\/span><span>(<\/span><span>&#8216;CSE_CX&#8217;<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>if<\/span><span> (!<\/span><span>key<\/span><span> || !<\/span><span>cx<\/span><span>) <\/span><span>throw<\/span><span> <\/span><span>new<\/span><span> <\/span><span>Error<\/span><span>(<\/span><span>&#8216;CSE_API_KEY\/CSE_CX \u672a\u8a2d\u5b9a&#8217;<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>params<\/span><span> = {<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>key<\/span><span>: <\/span><span>key<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>cx<\/span><span>: <\/span><span>cx<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>q<\/span><span>: <\/span><span>query<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>num<\/span><span>: <\/span><span>Math<\/span><span>.<\/span><span>min<\/span><span>(<\/span><span>maxResults<\/span><span> || <\/span><span>10<\/span><span>, <\/span><span>10<\/span><span>),<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>dateRestrict<\/span><span>: <\/span><span>dateRestrict<\/span><span> || <\/span><span>&#8216;w1&#8217;<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>safe<\/span><span>: <\/span><span>&#8216;off&#8217;<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>lr<\/span><span>: <\/span><span>&#8216;lang_ja&#8217;<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>hl<\/span><span>: <\/span><span>&#8216;ja&#8217;<\/span><\/div>\n<div><span>\u00a0 };<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>apiUrl<\/span><span> = <\/span><span>&#8216;https:\/\/www.googleapis.com\/customsearch\/v1?&#8217;<\/span><span> +<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>Object<\/span><span>.<\/span><span>keys<\/span><span>(<\/span><span>params<\/span><span>).<\/span><span>map<\/span><span>(<\/span><span>k<\/span><span> =&gt; <\/span><span>`<\/span><span>${<\/span><span>k<\/span><span>}<\/span><span>=<\/span><span>${<\/span><span>encodeURIComponent<\/span><span>(<\/span><span>params<\/span><span>[<\/span><span>k<\/span><span>])}<\/span><span>`<\/span><span>).<\/span><span>join<\/span><span>(<\/span><span>&#8216;&amp;&#8217;<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>res<\/span><span> = <\/span><span>UrlFetchApp<\/span><span>.<\/span><span>fetch<\/span><span>(<\/span><span>apiUrl<\/span><span>, { <\/span><span>muteHttpExceptions<\/span><span>: <\/span><span>true<\/span><span> });<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>code<\/span><span> = <\/span><span>res<\/span><span>.<\/span><span>getResponseCode<\/span><span>();<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>raw<\/span><span> \u00a0= <\/span><span>res<\/span><span>.<\/span><span>getContentText<\/span><span>(); <\/span><span>\/\/ \u2190 RAW\u3092\u4fdd\u6301<\/span><\/div>\n<div><span>\u00a0 <\/span><span>if<\/span><span> (<\/span><span>code<\/span><span> &gt;= <\/span><span>400<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>logRow<\/span><span>(<\/span><span>&#8216;ERROR&#8217;<\/span><span>, <\/span><span>&#8216;n\/a&#8217;<\/span><span>, <\/span><span>`CSE <\/span><span>${<\/span><span>code<\/span><span>}<\/span><span>`<\/span><span>, <\/span><span>raw<\/span><span>.<\/span><span>slice<\/span><span>(<\/span><span>0<\/span><span>,<\/span><span>3000<\/span><span>));<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>throw<\/span><span> <\/span><span>new<\/span><span> <\/span><span>Error<\/span><span>(<\/span><span>`Custom Search API \u30a8\u30e9\u30fc: <\/span><span>${<\/span><span>code<\/span><span>}<\/span><span> <\/span><span>${<\/span><span>raw<\/span><span>}<\/span><span>`<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 }<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>data<\/span><span> = <\/span><span>JSON<\/span><span>.<\/span><span>parse<\/span><span>(<\/span><span>raw<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>items<\/span><span> = (<\/span><span>data<\/span><span>.<\/span><span>items<\/span><span> || []).<\/span><span>map<\/span><span>(<\/span><span>it<\/span><span> =&gt; ({<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>title<\/span><span>: <\/span><span>it<\/span><span>.<\/span><span>title<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>link<\/span><span>: <\/span><span>it<\/span><span>.<\/span><span>link<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>snippet<\/span><span>: <\/span><span>it<\/span><span>.<\/span><span>snippet<\/span><span> || <\/span><span>&#8221;<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>source<\/span><span>: <\/span><span>it<\/span><span>.<\/span><span>link<\/span><span>.<\/span><span>replace<\/span><span>(<\/span><span>\/^https?:\\\/\\\/\/<\/span><span>, <\/span><span>&#8221;<\/span><span>).<\/span><span>split<\/span><span>(<\/span><span>&#8216;\/&#8217;<\/span><span>)[<\/span><span>0<\/span><span>]<\/span><\/div>\n<div><span>\u00a0 }));<\/span><\/div>\n<div><span>\u00a0 <\/span><span>return<\/span><span> { <\/span><span>items<\/span><span>, <\/span><span>apiUrl<\/span><span>, <\/span><span>raw<\/span><span> };<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>\/\/ ====== OpenAI Filtering &amp; Summarization ======<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>openaiScreenAndSummarize<\/span><span>(<\/span><span>items<\/span><span>, <\/span><span>sinceDate<\/span><span>, <\/span><span>tz<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>key<\/span><span> = <\/span><span>PropertiesService<\/span><span>.<\/span><span>getScriptProperties<\/span><span>().<\/span><span>getProperty<\/span><span>(<\/span><span>&#8216;OPENAI_API_KEY&#8217;<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>sys<\/span><span> = <\/span><span>`You are a precise analyst. Output JSON only. Keep official vendor updates within last <\/span><span>${<\/span><span>CONF<\/span><span>.<\/span><span>DAYS<\/span><span>}<\/span><span> days.`<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>user<\/span><span> = <\/span><span>JSON<\/span><span>.<\/span><span>stringify<\/span><span>({<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>since<\/span><span>: <\/span><span>Utilities<\/span><span>.<\/span><span>formatDate<\/span><span>(<\/span><span>sinceDate<\/span><span>, <\/span><span>tz<\/span><span>, <\/span><span>&#8220;yyyy-MM-dd&#8217;T&#8217;HH:mm:ssXXX&#8221;<\/span><span>),<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>items<\/span><\/div>\n<div><span>\u00a0 });<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>payload<\/span><span> = {<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>model<\/span><span>: <\/span><span>&#8216;gpt-4o-mini&#8217;<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>response_format<\/span><span>: { <\/span><span>type<\/span><span>: <\/span><span>&#8216;json_object&#8217;<\/span><span> },<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>messages<\/span><span>: [<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 { <\/span><span>role<\/span><span>:<\/span><span>&#8216;system&#8217;<\/span><span>, <\/span><span>content<\/span><span>: <\/span><span>sys<\/span><span> },<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 { <\/span><span>role<\/span><span>:<\/span><span>&#8216;user&#8217;<\/span><span>, <\/span><span>content<\/span><span>:<\/span><\/div>\n<div><span>`From the candidate web results, return only official vendor update posts within the past <\/span><span>${<\/span><span>CONF<\/span><span>.<\/span><span>DAYS<\/span><span>}<\/span><span> days.<\/span><\/div>\n<div><span>For each accepted item, extract:<\/span><\/div>\n<div><span>{tool, title, url, source, published_at(ISO), summary_ja(&lt;=120\u5b57), is_official(bool)}<\/span><\/div>\n<div><span>Also add &#8220;highlights_ja&#8221;: top 3 cross-tool bullets (&lt;=70\u5b57 each) at the end as {highlights_ja:[&#8230;]}.<\/span><\/div>\n<div><span>JSON keys: {accepted:[], highlights_ja:[]}. <\/span><\/div>\n<div><span>Input JSON: <\/span><span>${<\/span><span>user<\/span><span>}<\/span><span>`<\/span><span> }<\/span><\/div>\n<div><span>\u00a0 \u00a0 ],<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>temperature<\/span><span>: <\/span><span>0.2<\/span><\/div>\n<div><span>\u00a0 };<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>resp<\/span><span> = <\/span><span>UrlFetchApp<\/span><span>.<\/span><span>fetch<\/span><span>(<\/span><span>&#8216;https:\/\/api.openai.com\/v1\/chat\/completions&#8217;<\/span><span>, {<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>method<\/span><span>:<\/span><span>&#8216;post&#8217;<\/span><span>,<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>headers<\/span><span>:{ <\/span><span>&#8216;Authorization&#8217;<\/span><span>: <\/span><span>`Bearer <\/span><span>${<\/span><span>key<\/span><span>}<\/span><span>`<\/span><span>, <\/span><span>&#8216;Content-Type&#8217;<\/span><span>:<\/span><span>&#8216;application\/json&#8217;<\/span><span> },<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>payload<\/span><span>: <\/span><span>JSON<\/span><span>.<\/span><span>stringify<\/span><span>(<\/span><span>payload<\/span><span>),<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>muteHttpExceptions<\/span><span>:<\/span><span>true<\/span><\/div>\n<div><span>\u00a0 });<\/span><\/div>\n<div><span>\u00a0 <\/span><span>if<\/span><span> (<\/span><span>resp<\/span><span>.<\/span><span>getResponseCode<\/span><span>()&gt;=<\/span><span>400<\/span><span>) <\/span><span>throw<\/span><span> <\/span><span>new<\/span><span> <\/span><span>Error<\/span><span>(<\/span><span>resp<\/span><span>.<\/span><span>getContentText<\/span><span>());<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>text<\/span><span> = <\/span><span>JSON<\/span><span>.<\/span><span>parse<\/span><span>(<\/span><span>resp<\/span><span>.<\/span><span>getContentText<\/span><span>()).<\/span><span>choices<\/span><span>?.[<\/span><span>0<\/span><span>]?.<\/span><span>message<\/span><span>?.<\/span><span>content<\/span><span> || <\/span><span>&#8216;{}&#8217;<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>return<\/span><span> <\/span><span>JSON<\/span><span>.<\/span><span>parse<\/span><span>(<\/span><span>text<\/span><span>);<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>\/\/ ====== Email HTML ======<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>buildHtml<\/span><span>(<\/span><span>data<\/span><span>, <\/span><span>tz<\/span><span>, <\/span><span>since<\/span><span>, <\/span><span>today<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>head<\/span><span> = <\/span><span>`<\/span><\/div>\n<div><span>\u00a0 \u00a0 &lt;div style=&#8221;font-family:system-ui,Segoe UI,Roboto,sans-serif;line-height:1.6&#8243;&gt;<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 &lt;h2&gt;<\/span><span>${<\/span><span>CONF<\/span><span>.<\/span><span>SUBJECT_PREFIX<\/span><span>}<\/span><span>&lt;\/h2&gt;<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 &lt;p&gt;\u5bfe\u8c61\u671f\u9593\uff1a<\/span><span>${<\/span><span>Utilities<\/span><span>.<\/span><span>formatDate<\/span><span>(<\/span><span>since<\/span><span>,<\/span><span>tz<\/span><span>,<\/span><span>&#8216;yyyy-MM-dd&#8217;<\/span><span>)}<\/span><span> \u301c <\/span><span>${<\/span><span>Utilities<\/span><span>.<\/span><span>formatDate<\/span><span>(<\/span><span>today<\/span><span>,<\/span><span>tz<\/span><span>,<\/span><span>&#8216;yyyy-MM-dd&#8217;<\/span><span>)}<\/span><span>&lt;\/p&gt;<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 <\/span><span>${<\/span><span>data<\/span><span>.<\/span><span>highlights_ja<\/span><span>?.<\/span><span>length<\/span><span> ? <\/span><span>`&lt;h3&gt;\u4eca\u9031\u306e\u30cf\u30a4\u30e9\u30a4\u30c8&lt;\/h3&gt;&lt;ul&gt;<\/span><span>${<\/span><span>data<\/span><span>.<\/span><span>highlights_ja<\/span><span>.<\/span><span>map<\/span><span>(<\/span><span>x<\/span><span>=&gt;<\/span><span>`&lt;li&gt;<\/span><span>${<\/span><span>escapeHtml<\/span><span>(<\/span><span>x<\/span><span>)}<\/span><span>&lt;\/li&gt;`<\/span><span>).<\/span><span>join<\/span><span>(<\/span><span>&#8221;<\/span><span>)}<\/span><span>&lt;\/ul&gt;`<\/span><span>:<\/span><span>&#8221;<\/span><span>}<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 &lt;h3&gt;\u66f4\u65b0\u4e00\u89a7\uff08\u516c\u5f0f\u30fb\u9031\u5185\uff09&lt;\/h3&gt;<\/span><\/div>\n<div><span>\u00a0 `<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>body<\/span><span> = (<\/span><span>data<\/span><span>.<\/span><span>accepted<\/span><span>||[]).<\/span><span>map<\/span><span>(<\/span><span>x<\/span><span> =&gt; {<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>const<\/span><span> <\/span><span>date<\/span><span> = <\/span><span>x<\/span><span>.<\/span><span>published_at<\/span><span> ? <\/span><span>new<\/span><span> <\/span><span>Date<\/span><span>(<\/span><span>x<\/span><span>.<\/span><span>published_at<\/span><span>) : <\/span><span>null<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>const<\/span><span> <\/span><span>ds<\/span><span> = <\/span><span>date<\/span><span> ? <\/span><span>Utilities<\/span><span>.<\/span><span>formatDate<\/span><span>(<\/span><span>date<\/span><span>, <\/span><span>tz<\/span><span>, <\/span><span>&#8216;yyyy-MM-dd HH:mm&#8217;<\/span><span>) : <\/span><span>&#8221;<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>return<\/span><span> <\/span><span>`&lt;li&gt;&lt;strong&gt;<\/span><span>${<\/span><span>escapeHtml<\/span><span>(<\/span><span>x<\/span><span>.<\/span><span>tool<\/span><span>)}<\/span><span>&lt;\/strong&gt;\uff1a&lt;a href=&#8221;<\/span><span>${<\/span><span>escapeHtml<\/span><span>(<\/span><span>x<\/span><span>.<\/span><span>url<\/span><span>)}<\/span><span>&#8221; target=&#8221;_blank&#8221;&gt;<\/span><span>${<\/span><span>escapeHtml<\/span><span>(<\/span><span>x<\/span><span>.<\/span><span>title<\/span><span>)}<\/span><span>&lt;\/a&gt;<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 &lt;span style=&#8221;color:#666&#8243;&gt;\uff08<\/span><span>${<\/span><span>escapeHtml<\/span><span>(<\/span><span>x<\/span><span>.<\/span><span>source<\/span><span>)}<\/span><span> \/ <\/span><span>${<\/span><span>ds<\/span><span>}<\/span><span>\uff09&lt;\/span&gt;&lt;br&gt;<\/span><span>${<\/span><span>escapeHtml<\/span><span>(<\/span><span>x<\/span><span>.<\/span><span>summary_ja<\/span><span>||<\/span><span>&#8221;<\/span><span>)}<\/span><span>&lt;\/li&gt;`<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 }).<\/span><span>join<\/span><span>(<\/span><span>&#8221;<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>tail<\/span><span> = <\/span><span>`<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 &lt;ol&gt;<\/span><span>${<\/span><span>body<\/span><span>||<\/span><span>&#8216;&lt;p&gt;\u8a72\u5f53\u306a\u3057&lt;\/p&gt;&#8217;<\/span><span>}<\/span><span>&lt;\/ol&gt;<\/span><\/div>\n<div><span>\u00a0 \u00a0 \u00a0 &lt;hr&gt;&lt;p style=&#8221;color:#666;font-size:12px&#8221;&gt;\u81ea\u52d5\u914d\u4fe1\uff1aGAS\uff0bCSE\uff0bOpenAI\uff08\u516c\u5f0f\u66f4\u65b0\u306e\u307f\u62bd\u51fa\uff09&lt;\/p&gt;<\/span><\/div>\n<div><span>\u00a0 \u00a0 &lt;\/div&gt;`<\/span><span>;<\/span><\/div>\n<div><span>\u00a0 <\/span><span>return<\/span><span> <\/span><span>head<\/span><span> + <\/span><span>tail<\/span><span>;<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>escapeHtml<\/span><span>(<\/span><span>s<\/span><span>){<\/span><span>return<\/span><span> <\/span><span>String<\/span><span>(<\/span><span>s<\/span><span>).<\/span><span>replace<\/span><span>(<\/span><span>\/&amp;\/<\/span><span>g<\/span><span>,<\/span><span>&#8216;&amp;amp;&#8217;<\/span><span>).<\/span><span>replace<\/span><span>(<\/span><span>\/&lt;\/<\/span><span>g<\/span><span>,<\/span><span>&#8216;&amp;lt;&#8217;<\/span><span>).<\/span><span>replace<\/span><span>(<\/span><span>\/&gt;\/<\/span><span>g<\/span><span>,<\/span><span>&#8216;&amp;gt;&#8217;<\/span><span>).<\/span><span>replace<\/span><span>(<\/span><span>\/&#8221;\/<\/span><span>g<\/span><span>,<\/span><span>&#8216;&amp;quot;&#8217;<\/span><span>).<\/span><span>replace<\/span><span>(<\/span><span>\/&#8217;\/<\/span><span>g<\/span><span>,<\/span><span>&#8216;&amp;#39;&#8217;<\/span><span>);}<\/span><\/div>\n<div><span>\/\/ \u521d\u56de\u7528\uff1a\u6708\u66dc09:00 JST\u3067\u9031\u6b21\u30c8\u30ea\u30ac\u30fc\u3092\u4f5c\u6210<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>setupWeeklyTrigger<\/span><span>(){<\/span><\/div>\n<div><span>\u00a0 <\/span><span>ScriptApp<\/span><span>.<\/span><span>getProjectTriggers<\/span><span>().<\/span><span>forEach<\/span><span>(<\/span><span>t<\/span><span> =&gt; <\/span><span>t<\/span><span>.<\/span><span>getHandlerFunction<\/span><span>()===<\/span><span>&#8216;weeklyItUpdates&#8217;<\/span><span> &amp;&amp; <\/span><span>ScriptApp<\/span><span>.<\/span><span>deleteTrigger<\/span><span>(<\/span><span>t<\/span><span>));<\/span><\/div>\n<div><span>\u00a0 <\/span><span>ScriptApp<\/span><span>.<\/span><span>newTrigger<\/span><span>(<\/span><span>&#8216;weeklyItUpdates&#8217;<\/span><span>).<\/span><span>timeBased<\/span><span>().<\/span><span>onWeekDay<\/span><span>(<\/span><span>ScriptApp<\/span><span>.<\/span><span>WeekDay<\/span><span>.<\/span><span>MONDAY<\/span><span>).<\/span><span>atHour<\/span><span>(<\/span><span>9<\/span><span>).<\/span><span>create<\/span><span>();<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>\/** ===== \u30ed\u30b0\u7528\u8a2d\u5b9a ===== *\/<\/span><\/div>\n<div><span>const<\/span><span> <\/span><span>LOGS_SHEET<\/span><span> \u00a0 \u00a0 = <\/span><span>&#8216;Logs&#8217;<\/span><span>; \u00a0 \u00a0 \u00a0 <\/span><span>\/\/ \u5b9f\u884c\u30ed\u30b0\uff08INFO\/ERROR\uff09<\/span><\/div>\n<div><span>const<\/span><span> <\/span><span>CANDIDATES_SHEET<\/span><span> = <\/span><span>&#8216;Candidates&#8217;<\/span><span>;<\/span><span>\/\/ \u53d6\u5f97\u5019\u88dc\uff08\u691c\u7d22\u7d50\u679c\uff09<\/span><\/div>\n<div><span>const<\/span><span> <\/span><span>ACCEPTED_SHEET<\/span><span> \u00a0 = <\/span><span>&#8216;Accepted&#8217;<\/span><span>; \u00a0<\/span><span>\/\/ \u6700\u7d42\u63a1\u7528\uff08\u516c\u5f0f\uff06\u9031\u5185\uff09<\/span><\/div>\n<div><span>const<\/span><span> <\/span><span>RAW_SHEET<\/span><span> \u00a0 \u00a0 \u00a0 \u00a0= <\/span><span>&#8216;RawJSON&#8217;<\/span><span>; \u00a0 <\/span><span>\/\/ \uff08\u4efb\u610f\uff09\u691c\u7d22API\u306e\u751fJSON\u3092\u4fdd\u5b58<\/span><\/div>\n<div><span>\/** \u30b7\u30fc\u30c8\u53d6\u5f97\uff08\u306a\u3051\u308c\u3070\u4f5c\u6210\uff09\uff0b\u30d8\u30c3\u30c0\u30fc\u4ed8\u4e0e *\/<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>getOrCreateSheet<\/span><span>(<\/span><span>name<\/span><span>, <\/span><span>headers<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>ss<\/span><span> = <\/span><span>SpreadsheetApp<\/span><span>.<\/span><span>getActiveSpreadsheet<\/span><span>();<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>sh<\/span><span> = <\/span><span>ss<\/span><span>.<\/span><span>getSheetByName<\/span><span>(<\/span><span>name<\/span><span>) || <\/span><span>ss<\/span><span>.<\/span><span>insertSheet<\/span><span>(<\/span><span>name<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>if<\/span><span> (<\/span><span>sh<\/span><span>.<\/span><span>getLastRow<\/span><span>() === <\/span><span>0<\/span><span> &amp;&amp; <\/span><span>headers<\/span><span> &amp;&amp; <\/span><span>headers<\/span><span>.<\/span><span>length<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>sh<\/span><span>.<\/span><span>appendRow<\/span><span>(<\/span><span>headers<\/span><span>);<\/span><\/div>\n<div><span>\u00a0 }<\/span><\/div>\n<div><span>\u00a0 <\/span><span>return<\/span><span> <\/span><span>sh<\/span><span>;<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>\/** \u5b9f\u884c\u30ed\u30b0 *\/<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>logRow<\/span><span>(<\/span><span>level<\/span><span>, <\/span><span>runId<\/span><span>, <\/span><span>message<\/span><span>, <\/span><span>extra<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>sh<\/span><span> = <\/span><span>getOrCreateSheet<\/span><span>(<\/span><span>LOGS_SHEET<\/span><span>, [<\/span><span>&#8216;timestamp&#8217;<\/span><span>,<\/span><span>&#8216;level&#8217;<\/span><span>,<\/span><span>&#8216;runId&#8217;<\/span><span>,<\/span><span>&#8216;message&#8217;<\/span><span>,<\/span><span>&#8216;extra&#8217;<\/span><span>]);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>sh<\/span><span>.<\/span><span>appendRow<\/span><span>([<\/span><span>new<\/span><span> <\/span><span>Date<\/span><span>(), <\/span><span>level<\/span><span>, <\/span><span>runId<\/span><span>, <\/span><span>message<\/span><span>, <\/span><span>extra<\/span><span> || <\/span><span>&#8221;<\/span><span>]);<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>\/** \u5019\u88dc\u306e\u8a18\u9332 *\/<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>writeCandidates<\/span><span>(<\/span><span>runId<\/span><span>, <\/span><span>tool<\/span><span>, <\/span><span>query<\/span><span>, <\/span><span>apiUrl<\/span><span>, <\/span><span>items<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>sh<\/span><span> = <\/span><span>getOrCreateSheet<\/span><span>(<\/span><span>CANDIDATES_SHEET<\/span><span>, [<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>&#8216;runId&#8217;<\/span><span>,<\/span><span>&#8216;timestamp&#8217;<\/span><span>,<\/span><span>&#8216;tool&#8217;<\/span><span>,<\/span><span>&#8216;query&#8217;<\/span><span>,<\/span><span>&#8216;apiUrl&#8217;<\/span><span>,<\/span><span>&#8216;title&#8217;<\/span><span>,<\/span><span>&#8216;link&#8217;<\/span><span>,<\/span><span>&#8216;source&#8217;<\/span><span>,<\/span><span>&#8216;snippet&#8217;<\/span><\/div>\n<div><span>\u00a0 ]);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>now<\/span><span> = <\/span><span>new<\/span><span> <\/span><span>Date<\/span><span>();<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>rows<\/span><span> = <\/span><span>items<\/span><span>.<\/span><span>map<\/span><span>(<\/span><span>it<\/span><span> =&gt; [<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>runId<\/span><span>, <\/span><span>now<\/span><span>, <\/span><span>tool<\/span><span>, <\/span><span>query<\/span><span>, <\/span><span>apiUrl<\/span><span>, <\/span><span>it<\/span><span>.<\/span><span>title<\/span><span>, <\/span><span>it<\/span><span>.<\/span><span>link<\/span><span>, <\/span><span>it<\/span><span>.<\/span><span>source<\/span><span>, <\/span><span>it<\/span><span>.<\/span><span>snippet<\/span><span> || <\/span><span>&#8221;<\/span><\/div>\n<div><span>\u00a0 ]);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>if<\/span><span> (<\/span><span>rows<\/span><span>.<\/span><span>length<\/span><span>) <\/span><span>sh<\/span><span>.<\/span><span>getRange<\/span><span>(<\/span><span>sh<\/span><span>.<\/span><span>getLastRow<\/span><span>()+<\/span><span>1<\/span><span>,<\/span><span>1<\/span><span>,<\/span><span>rows<\/span><span>.<\/span><span>length<\/span><span>,<\/span><span>rows<\/span><span>[<\/span><span>0<\/span><span>].<\/span><span>length<\/span><span>).<\/span><span>setValues<\/span><span>(<\/span><span>rows<\/span><span>);<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>\/** \u63a1\u7528\u7d50\u679c\u306e\u8a18\u9332 *\/<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>writeAccepted<\/span><span>(<\/span><span>runId<\/span><span>, <\/span><span>accepted<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>sh<\/span><span> = <\/span><span>getOrCreateSheet<\/span><span>(<\/span><span>ACCEPTED_SHEET<\/span><span>, [<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>&#8216;runId&#8217;<\/span><span>,<\/span><span>&#8216;timestamp&#8217;<\/span><span>,<\/span><span>&#8216;tool&#8217;<\/span><span>,<\/span><span>&#8216;title&#8217;<\/span><span>,<\/span><span>&#8216;url&#8217;<\/span><span>,<\/span><span>&#8216;source&#8217;<\/span><span>,<\/span><span>&#8216;published_at&#8217;<\/span><span>,<\/span><span>&#8216;summary_ja&#8217;<\/span><span>,<\/span><span>&#8216;is_official&#8217;<\/span><\/div>\n<div><span>\u00a0 ]);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>now<\/span><span> = <\/span><span>new<\/span><span> <\/span><span>Date<\/span><span>();<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>rows<\/span><span> = (<\/span><span>accepted<\/span><span>||[]).<\/span><span>map<\/span><span>(<\/span><span>x<\/span><span> =&gt; [<\/span><\/div>\n<div><span>\u00a0 \u00a0 <\/span><span>runId<\/span><span>, <\/span><span>now<\/span><span>, <\/span><span>x<\/span><span>.<\/span><span>tool<\/span><span>, <\/span><span>x<\/span><span>.<\/span><span>title<\/span><span>, <\/span><span>x<\/span><span>.<\/span><span>url<\/span><span>, <\/span><span>x<\/span><span>.<\/span><span>source<\/span><span>, <\/span><span>x<\/span><span>.<\/span><span>published_at<\/span><span> || <\/span><span>&#8221;<\/span><span>, <\/span><span>x<\/span><span>.<\/span><span>summary_ja<\/span><span> || <\/span><span>&#8221;<\/span><span>, <\/span><span>x<\/span><span>.<\/span><span>is_official<\/span><\/div>\n<div><span>\u00a0 ]);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>if<\/span><span> (<\/span><span>rows<\/span><span>.<\/span><span>length<\/span><span>) <\/span><span>sh<\/span><span>.<\/span><span>getRange<\/span><span>(<\/span><span>sh<\/span><span>.<\/span><span>getLastRow<\/span><span>()+<\/span><span>1<\/span><span>,<\/span><span>1<\/span><span>,<\/span><span>rows<\/span><span>.<\/span><span>length<\/span><span>,<\/span><span>rows<\/span><span>[<\/span><span>0<\/span><span>].<\/span><span>length<\/span><span>).<\/span><span>setValues<\/span><span>(<\/span><span>rows<\/span><span>);<\/span><\/div>\n<div><span>}<\/span><\/div>\n<div><span>\/** \u4efb\u610f\uff1aRAW JSON\u4fdd\u5b58\uff08\u30b5\u30a4\u30ba\u6ce8\u610f\uff09 *\/<\/span><\/div>\n<div><span>function<\/span><span> <\/span><span>writeRaw<\/span><span>(<\/span><span>runId<\/span><span>, <\/span><span>tool<\/span><span>, <\/span><span>query<\/span><span>, <\/span><span>jsonText<\/span><span>) {<\/span><\/div>\n<div><span>\u00a0 <\/span><span>const<\/span><span> <\/span><span>sh<\/span><span> = <\/span><span>getOrCreateSheet<\/span><span>(<\/span><span>RAW_SHEET<\/span><span>, [<\/span><span>&#8216;runId&#8217;<\/span><span>,<\/span><span>&#8216;timestamp&#8217;<\/span><span>,<\/span><span>&#8216;tool&#8217;<\/span><span>,<\/span><span>&#8216;query&#8217;<\/span><span>,<\/span><span>&#8216;jsonText&#8217;<\/span><span>]);<\/span><\/div>\n<div><span>\u00a0 <\/span><span>sh<\/span><span>.<\/span><span>appendRow<\/span><span>([<\/span><span>runId<\/span><span>, <\/span><span>new<\/span><span> <\/span><span>Date<\/span><span>(), <\/span><span>tool<\/span><span>, <\/span><span>query<\/span><span>, <\/span><span>jsonText<\/span><span>]);<\/span><\/div>\n<div><span>}<\/span><\/div>\n<\/div>\n<\/blockquote>\n<h2 data-start=\"552\" data-end=\"672\"><span class=\"ez-toc-section\" id=\"%E8%AA%BF%E6%9F%BB%E7%B5%90%E6%9E%9C%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E4%BE%8B\"><\/span>\u8abf\u67fb\u7d50\u679c\u30ec\u30dd\u30fc\u30c8\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>&nbsp;<\/p>\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u591a\u69d8\u306agoogle\u306e\u5148\u9031\u306e\u6700\u65b0\u60c5\u5831\u3067\u3001\u4eca\u56de\u306f\u4fa1\u683c\u3068\u304b\u30d7\u30e9\u30f3\u5909\u66f4\u3068\u304b\u3001\u5024\u4e0a\u3052\u3068\u304b\u306b\u30de\u30c3\u30c1\u3059\u308b\u3082\u306e\u3092\u30ea\u30b9\u30c8\u30a2\u30c3\u30d7<\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-130001.png\" alt=\"\u30ea\u30b9\u30c8\u30a2\u30c3\u30d7\u3057\u305f\u3082\u306e\" width=\"1509\" height=\"913\" class=\"aligncenter size-full wp-image-20323 lazyload\" data-srcset=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-130001.png 1509w, https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-130001-300x182.png 300w, https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-130001-1024x620.png 1024w, https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-130001-768x465.png 768w\" data-sizes=\"(max-width: 1509px) 100vw, 1509px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1509px; --smush-placeholder-aspect-ratio: 1509\/913;\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>\u3053\u3053\u304b\u3089chatGPT\u306b\u60c5\u5831\u3092\u6e21\u3057\u3066\u7cbe\u67fb\u3057\u3066\u3082\u3089\u3044\u3001\u6700\u7d42\u7684\u306b\u8a72\u5f53\u3059\u308b\u8005\u306f\u4ee5\u4e0b\u306e\uff12\u3064\u3068\u3044\u3046\u5224\u65ad\u306b\u306a\u308a\u3001\u3053\u308c\u304c\u30e1\u30fc\u30eb\u3067\u5c4a\u304d\u307e\u3057\u305f\u3002<\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-125831.png\" alt=\"\u30ec\u30dd\u30fc\u30c8\u4f8b\" width=\"1286\" height=\"696\" class=\"aligncenter size-full wp-image-20322 lazyload\" data-srcset=\"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-125831.png 1286w, https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-125831-300x162.png 300w, https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-125831-1024x554.png 1024w, https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-11-11-125831-768x416.png 768w\" data-sizes=\"(max-width: 1286px) 100vw, 1286px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1286px; --smush-placeholder-aspect-ratio: 1286\/696;\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>\u4eca\u56de\u306f\u3001\u3046\u3061\u304c\u77e5\u308a\u305f\u3044\u60c5\u5831\u304c\u3001IT\u30c4\u30fc\u30eb\u306e\u5024\u4e0a\u3052\u3060\u3063\u305f\u306e\u3067\u3001\u305d\u3046\u3044\u3046\u6307\u793a\u306b\u3057\u307e\u3057\u305f\u304c\u3001\u5404\u696d\u754c\u306e\u6700\u65b0\u60c5\u5831\u3084\u6cd5\u5f8b\u3001\u30eb\u30fc\u30eb\u5909\u66f4\u3001\u305d\u306e\u4ed6\u4f01\u696d\u69d8\u3054\u3068\u306b\u77e5\u308a\u305f\u3044\u60c5\u5831\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3066\u3001\u5b9a\u671f\u30ec\u30dd\u30fc\u30c8\u3092\u914d\u4fe1\u3059\u308b\u4ed5\u7d44\u307f\u3092\u4f5c\u308b\u3053\u3068\u306f\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E3%81%AA%E3%81%9C%E3%80%81chatGPT%E3%81%AE%E3%82%BF%E3%82%B9%E3%82%AF%E3%81%A0%E3%81%91%E3%81%A7%E3%81%AA%E3%81%84%E3%81%AE%E3%81%8B%EF%BC%9F\"><\/span>\u306a\u305c\u3001chatGPT\u306e\u30bf\u30b9\u30af\u3060\u3051\u3067\u306a\u3044\u306e\u304b\uff1f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u5b9f\u306fchatGPT\u306b\u306f\u30bf\u30b9\u30af\u6a5f\u80fd\u304c\u3042\u308a\u3001\u6bce\u9031\u6307\u5b9a\u3057\u305f\u51e6\u7406\u3092\u5b9f\u884c\u3057\u3066\u3082\u3089\u3044\u3001\u305d\u308c\u3053\u305d\u30e1\u30fc\u30eb\u3092\u9001\u3063\u3066\u3082\u3089\u3046\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u305f\u3060\u3001\u3084\u3063\u3066\u307f\u3066\u4ee5\u4e0b\u306e\u6b20\u70b9\u304c\u3042\u308a\u307e\u3057\u305f\u3002<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E2%91%A0%E8%87%AA%E5%88%86%E3%81%AE%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AB%E5%B1%8A%E3%81%8F\"><\/span>\u2460\u81ea\u5206\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u5c4a\u304f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u672c\u5f53\u306f\u793e\u54e1\u5168\u54e1\u304c\u307f\u308b\u30e1\u30fc\u30eb\u306b\u9001\u308a\u305f\u3044\u306e\u306b\u3001\u73fe\u72b6\u3067\u306f\u81ea\u5206\u3042\u3066\u306e\u9001\u4fe1\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u3002<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E2%91%A1%E3%83%A1%E3%83%BC%E3%83%AB%E6%9C%AC%E6%96%87%E3%81%AB%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E5%86%85%E5%AE%B9%E3%82%92%E6%9B%B8%E3%81%91%E3%81%AA%E3%81%84\"><\/span>\u2461\u30e1\u30fc\u30eb\u672c\u6587\u306b\u30ec\u30dd\u30fc\u30c8\u5185\u5bb9\u3092\u66f8\u3051\u306a\u3044<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>chatGPT\u304c\u30bf\u30b9\u30af\u3067\u9001\u308b\u306e\u306f\u3001\u30ec\u30dd\u30fc\u30c8\u306e\u5185\u5bb9\u3092\u672c\u6587\u306b\u66f8\u304f\u306e\u3067\u306f\u306a\u304f\u3001chatGPT\u306e\u8a72\u5f53\u30b9\u30ec\u30c3\u30c9\u306e\u30ea\u30f3\u30af\u3067\u3057\u305f\u3002<\/p>\n<p>\u305d\u308c\u3060\u3068\u3001\u3044\u3061\u3044\u3061\u30b9\u30bf\u30c3\u30d5\u304c\u30af\u30ea\u30c3\u30af\u3057\u3066\u3001\u4e2d\u3092\u898b\u3066\u304f\u308c\u308b\u304b\u3082\u308f\u304b\u3089\u305a\u3001\u672c\u6587\u306b\u30ec\u30dd\u30fc\u30c8\u3092\u5165\u308c\u305f\u3044\u3068\u3044\u3046\u306e\u304c\u3001\u5f37\u3044\u5e0c\u671b\u3067\u3042\u308a\u307e\u3057\u305f\u3002<\/p>\n<p>\u4e0a\u8a18\u2460\u2461\u306e\u7406\u7531\u3092\u30af\u30ea\u30a2\u3059\u308b\u305f\u3081\u3001GAS\u00d7chatGPT\u3068\u3044\u3046\u69cb\u6210\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"GAS%C3%97chatGPT_%E3%81%AB%E3%82%88%E3%82%8B%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E5%B0%8E%E5%85%A5%E3%81%AE%E5%8A%B9%E6%9E%9C%EF%BC%9A%E5%85%A8%E5%93%A1%E3%81%AB%E5%90%8C%E3%81%98%E3%82%BF%E3%82%A4%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E6%9C%80%E6%96%B0%E6%83%85%E5%A0%B1%E3%81%8C%E5%B1%8A%E3%81%8F\"><\/span>GAS\u00d7chatGPT \u306b\u3088\u308b\u30ec\u30dd\u30fc\u30c8\u5c0e\u5165\u306e\u52b9\u679c\uff1a\u5168\u54e1\u306b\u540c\u3058\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u6700\u65b0\u60c5\u5831\u304c\u5c4a\u304f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4eca\u56de\u5c0e\u5165\u306e\u76ee\u7684\u306f\u3001100\u3042\u308bIT\u30c4\u30fc\u30eb\u306e\u5024\u4e0a\u3052\u3092\u6f0f\u308c\u306a\u304f\u628a\u63e1\u3057\u305f\u3044\u3068\u3044\u3046\u3053\u3068\u3067\u3057\u305f\u304c\u3001<\/p>\n<p>\u5c0e\u5165\u3057\u3066\u307f\u3066\u3001\u30b9\u30bf\u30c3\u30d5\u3054\u3068\u306b\u60c5\u5831\u306e\u53d6\u5f97\u3059\u308b\u5148\u304c\u7570\u306a\u308a\u3001\u5fc5\u8981\u306a\u60c5\u5831\u306a\u306e\u306b\u3001\u540c\u3058\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u60c5\u5831\u304c\u5165\u3063\u3066\u304d\u3066\u3044\u306a\u3044\u3053\u3068\u304c\u3088\u304f\u308f\u304b\u308a\u307e\u3057\u305f\u3002<\/p>\n<p>\u4eca\u56de\u306e\u4ed5\u7d44\u307f\u3092\u5c0e\u5165\u3057\u3066\u3001\u793e\u54e1\u5168\u54e1\u304c\u898b\u308b\u30e1\u30fc\u30eb\u3067\u306b\u3001\u30ec\u30dd\u30fc\u30c8\u3092\u914d\u4fe1\u3059\u308b\u3053\u3068\u3067\u3001<\/p>\n<p>\u5168\u54e1\u304c\u540c\u3058\u60c5\u5831\u304c\u628a\u63e1\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u306e\u306f\u3001\u5927\u304d\u3044\u3068\u601d\u3044\u307e\u3057\u305f\u3002<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E3%80%90%E7%95%AA%E5%A4%96%E7%B7%A8%E3%80%91ChatGPT%E3%81%AB%E3%82%88%E3%82%8B%E6%8E%A1%E7%94%A8%E6%B4%BB%E5%8B%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6\"><\/span><strong><span style=\"font-size: 14pt;\">\u3010\u756a\u5916\u7de8\u3011ChatGPT\u306b\u3088\u308b\u63a1\u7528\u6d3b\u52d5\u306b\u3064\u3044\u3066<\/span><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span>\u63a1\u7528\u3067ChatGPT\u3092\u6d3b\u7528\u3055\u308c\u3066\u3044\u308b\u65b9\u306f\u3001<\/span><wbr \/><span>\u3053\u3061\u3089\u306e\u8a18\u4e8b\u3092\u3054\u89a7\u304f\u3060\u3055\u3044<br \/>\n<span style=\"color: #000080;\"><a href=\"https:\/\/recup.delight21.co.jp\/archives\/436\" style=\"color: #000080;\" target=\"_blank\" rel=\"noopener\">\u30c1\u30e3\u30c3\u30c8GPT\u306b\u3088\u308b\u6c42\u4eba\u5e83\u544a\u306e\u4f5c\u6210\u65b9\u6cd5\u3092\u5fb9\u5e95\u89e3\u8aac\uff01<\/a><\/span><\/span><span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"\u4e2d\u5c0f\u4f01\u696d\u306e\u7d4c\u55b6\u8005\u3084\u62c5\u5f53\u8005\u306b\u3068\u3063\u3066\u3001\u696d\u754c\u306e\u6700\u65b0\u60c5\u5831\u3092\u5b9a\u671f\u7684\u306b\u30c1\u30a7\u30c3\u30af\u3059\u308b\u3053\u3068\u306f\u91cd\u8981\u3067\u3059\u3088\u306d\u3002 \u305f\u3060\u3001\u7a4d\u6975\u7684\u306b\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u30b9\u30bf\u30c3\u30d5\u3082\u3044\u308c\u3070\u305d\u3046\u3067\u306a\u3044\u4eba\u3082 [&hellip;]","protected":false},"author":3,"featured_media":20324,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[115],"class_list":["post-20318","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-robot","tag-ai"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-content\/uploads\/2025\/11\/gas-chatgpt-blog.png","_links":{"self":[{"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/posts\/20318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/comments?post=20318"}],"version-history":[{"count":16,"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/posts\/20318\/revisions"}],"predecessor-version":[{"id":20500,"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/posts\/20318\/revisions\/20500"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/media\/20324"}],"wp:attachment":[{"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/media?parent=20318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/categories?post=20318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ardent.jp\/rentoffice-consultation-center\/wp-json\/wp\/v2\/tags?post=20318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}