{"id":17282,"date":"2025-01-24T17:27:04","date_gmt":"2025-01-24T08:27:04","guid":{"rendered":"https:\/\/84office.jp\/?p=17282"},"modified":"2025-01-24T17:27:04","modified_gmt":"2025-01-24T08:27:04","slug":"classification-chatgpt-googlesheets","status":"publish","type":"post","link":"https:\/\/84office.jp\/en\/classification-chatgpt-googlesheets\/","title":{"rendered":"How to Efficiently Organize Business Card Data with ChatGPT API: Leveraging Google Sheets and AI"},"content":{"rendered":"<div class=\"codoc-evacuations\" style=\"display:none;\" data-shortcode=\"\"><\/div>\n<div class=\"swell-block-capbox cap_box is-style-small_ttl u-mb-ctrl u-mb-50\" data-colset=\"col3\"><div class=\"cap_box_ttl\" data-has-icon=\"1\"><svg height=\"1em\" width=\"1em\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" viewBox=\"0 0 48 48\"><path d=\"M32 46.5H16c-1.1 0-2-.9-2-2s.9-2 2-2h16c1.1 0 2 .9 2 2s-.9 2-2 2zM33.3 18.6c-.7 0-1.3-.5-1.5-1.2-.7-3.2-3.2-5.7-6.4-6.3-.8-.1-1.4-.9-1.2-1.7s.9-1.4 1.7-1.2c4.4.8 8 4.2 8.9 8.6.2.8-.4 1.6-1.2 1.8h-.3z\"><\/path><path d=\"M30 40.5H18c-2.2 0-4-1.8-4-4v-1.6c0-.6-.3-1.1-.8-1.5C8.4 29.8 5.7 24 6 18c.5-9.1 8-16.6 17.1-17C29 .8 34.5 3.2 38.2 8c1.8 2.3 3 5.1 3.5 7.9 1.1 6.8-1.5 13.3-6.9 17.4-.6.4-.9 1-.9 1.7v1.5c.1 2.2-1.7 4-3.9 4zM23.3 5c-7.1.3-12.9 6.2-13.3 13.2-.2 4.7 1.8 9.1 5.6 11.9 1.5 1.1 2.4 2.9 2.4 4.7v.6c0 .6.4 1 1 1h10c.6 0 1-.4 1-1V35c0-1.9.9-3.7 2.5-4.8 4.3-3.2 6.3-8.5 5.3-13.9-.4-2-1.2-3.8-2.4-5.4-3-4-7.4-6.1-12.1-5.9z\"><\/path><\/svg><span><strong>Recommended for:<\/strong><\/span><\/div><div class=\"cap_box_content\">\n<ul class=\"wp-block-list\">\n<li>Those who spend too much time manually inputting business card information.<\/li>\n\n\n\n<li>Those who want to automate business card data entry and streamline their workflow.<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<p>In <a href=\"https:\/\/84office.jp\/en\/business-card-datamation\/\">the previous article<\/a>, we demonstrated how to use OCR (Optical Character Recognition) and GAS to transfer business card data into a Google Spreadsheet.<\/p>\n\n\n\n<p>However, in that setup, the entire business card information is stored in Column A.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-50\">In this article, we\u2019ll show you how to use the <strong>ChatGPT API<\/strong> to organize the data in Column A into specific fields, such as <strong>Company Name<\/strong>, <strong>Name<\/strong>, <strong>Job Title<\/strong>, <strong>Phone Number<\/strong>, and more.<\/p>\n\n\n<div class=\"swell-block-postLink u-mb-ctrl u-mb-60\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/d4c36cf8571e19a0603ef491705d2034-300x158.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/84office.jp\/en\/business-card-datamation\/\">Streamline Business Card Digitization with OCR and Google Apps Script: Save Time on Spreadsheet D&#8230;<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">Recommended for: Those who spend too much time manually inputting business card information. Those who want to automate business card data entry and improve &#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\n<h2 class=\"wp-block-heading\">Example Output<\/h2>\n\n\n\n<p><strong><strong>Before Data Organization<\/strong><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"554\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-103-1024x554.png\" alt=\"\" class=\"wp-image-17279\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-103-1024x554.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-103-300x162.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-103-768x416.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-103.png 1120w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong><strong>After Data Organization (Using ChatGPT API)<\/strong><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"160\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-105-1024x160.png\" alt=\"\" class=\"wp-image-17287\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-105-1024x160.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-105-300x47.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-105-768x120.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-105.png 1316w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>After the business card information is transferred to Column A, the <strong>ChatGPT API<\/strong> is used to organize the data into specific fields.<\/p>\n\n\n\n<p>The spreadsheet includes columns such as <strong>&#8220;Company Name,&#8221; &#8220;Department,&#8221; &#8220;Name,&#8221;<\/strong> and <strong>&#8220;Job Title,&#8221;<\/strong> where the corresponding data is automatically input into the appropriate columns.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Preparing the ChatGPT API<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"504\" height=\"315\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/10\/15b03199265a968eaa05bcdddcf35f8c.png\" alt=\"\" class=\"wp-image-14827\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/10\/15b03199265a968eaa05bcdddcf35f8c.png 504w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/10\/15b03199265a968eaa05bcdddcf35f8c-300x188.png 300w\" sizes=\"(max-width: 504px) 100vw, 504px\" \/><\/figure>\n\n\n\n<p>Before creating the GAS script, you need to obtain a <strong>ChatGPT API key<\/strong>.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">For detailed instructions on how to obtain the API key, please refer to a separate article.<\/p>\n\n\n<div class=\"swell-block-postLink u-mb-ctrl u-mb-60\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/f6c88dad5d673ac82ae03f91f1e0b846-300x158.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/84office.jp\/en\/chatgpt-spreadsheet\/\">Link ChatGPT with Google Sheets: Boost Efficiency Using Google Apps Script and ChatGPT API<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">If you want to integrate ChatGPT and spreadsheets to make your work more efficient, but don&#8217;t know how to do it, this article will show you the basic way to &#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\n<h2 class=\"wp-block-heading\">Steps<\/h2>\n\n\n\n<div class=\"swell-block-step u-mb-ctrl u-mb-60\" data-num-style=\"circle\">\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\">Prepare the Spreadsheet<\/div><div class=\"swell-block-step__body\">\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"554\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-103-1024x554.png\" alt=\"\" class=\"wp-image-17279\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-103-1024x554.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-103-300x162.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-103-768x416.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-103.png 1120w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>We will use a spreadsheet containing business card information that has already been transferred.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-30\">For details on how to extract and transfer business card information, please refer to the following article.<\/p>\n\n\n<div class=\"swell-block-postLink\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/d4c36cf8571e19a0603ef491705d2034-300x158.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/84office.jp\/en\/business-card-datamation\/\">Streamline Business Card Digitization with OCR and Google Apps Script: Save Time on Spreadsheet D&#8230;<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">Recommended for: Those who spend too much time manually inputting business card information. Those who want to automate business card data entry and improve &#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div><\/div><\/div>\n\n\n\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\"><strong>Create the Script<\/strong><\/div><div class=\"swell-block-step__body\"><div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-large\"><img decoding=\"async\" width=\"1024\" height=\"472\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e5e524d3405a7a1c3cfaaf3f2b1cc662-1024x472.png\" alt=\"\" class=\"wp-image-16191\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e5e524d3405a7a1c3cfaaf3f2b1cc662-1024x472.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e5e524d3405a7a1c3cfaaf3f2b1cc662-300x138.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e5e524d3405a7a1c3cfaaf3f2b1cc662-768x354.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e5e524d3405a7a1c3cfaaf3f2b1cc662.png 1387w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Since the default <code>function myFunction() {}<\/code> is present, delete it and replace it with the script below.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Google Apps Script to Use ChatGPT API for Parsing Business Card Information\n\n\/\/ Function to parse business card information\nfunction parseBusinessCard() {\n  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();\n  const dataRange = sheet.getRange(&quot;A2:A&quot; + sheet.getLastRow());\n  const data = dataRange.getValues();\n\n  data.forEach((row, index) =&gt; {\n    const cardInfo = row[0];\n    const rowIndex = index + 2; \/\/ Adjust for the header row\n    const isRowAlreadyParsed = sheet.getRange(`B${rowIndex}:L${rowIndex}`).getValues()[0].some(cell =&gt; cell !== &quot;&quot;);\n\n    \/\/ Process only rows with data in Column A and not already parsed\n    if (cardInfo &amp;&amp; !isRowAlreadyParsed) {\n      const parsedData = getChatGPTParsedData(sheet, cardInfo);\n      updateSheetWithParsedData(sheet, rowIndex, parsedData);\n    }\n  });\n}\n\n\/\/ Function to retrieve parsed data from ChatGPT API\nfunction getChatGPTParsedData(sheet, cardInfo) {\n  const apiKey = PropertiesService.getScriptProperties().getProperty(&quot;OPENAI_API_KEY&quot;);\n  const url = &quot;https:\/\/api.openai.com\/v1\/chat\/completions&quot;;\n  const headers = sheet.getRange(&quot;A1:L1&quot;).getValues()[0];\n  const headersJson = headers.reduce((acc, header) =&gt; {\n    acc[header] = &quot;&quot;; \/\/ Initialize JSON structure with empty values\n    return acc;\n  }, {});\n\n  const messages = [\n    {\n      &quot;role&quot;: &quot;user&quot;,\n      &quot;content&quot;: `Please parse the following business card information into the specified JSON format: ${JSON.stringify(headersJson)}: ${cardInfo}`\n    }\n  ];\n\n  const options = {\n    &quot;method&quot;: &quot;post&quot;,\n    &quot;headers&quot;: {\n      &quot;Authorization&quot;: `Bearer ${apiKey}`,\n      &quot;Content-Type&quot;: &quot;application\/json&quot;\n    },\n    &quot;payload&quot;: JSON.stringify({\n      &quot;model&quot;: &quot;gpt-4&quot;,\n      &quot;messages&quot;: messages,\n      &quot;max_tokens&quot;: 500,\n      &quot;temperature&quot;: 0.7\n    })\n  };\n\n  try {\n    const response = UrlFetchApp.fetch(url, options);\n    const json = JSON.parse(response.getContentText());\n    const parsedData = JSON.parse(json.choices[0].message.content.trim());\n    return parsedData;\n  } catch (error) {\n    Logger.log(&quot;Error while fetching data from ChatGPT API: &quot; + error);\n    return null;\n  }\n}\n\n\/\/ Function to update the spreadsheet with parsed data\nfunction updateSheetWithParsedData(sheet, rowIndex, parsedData) {\n  if (parsedData) {\n    const headers = sheet.getRange(&quot;A1:L1&quot;).getValues()[0];\n    headers.forEach((header, index) =&gt; {\n      sheet.getRange(rowIndex, index + 1).setValue(parsedData[header] || &quot;&quot;); \/\/ Populate columns with parsed data\n    });\n  }\n}\n\n\/\/ Function to set the ChatGPT API key in script properties\nfunction setApiKey() {\n  const apiKey = &quot;YOUR_API_KEY_HERE&quot;;\n  PropertiesService.getScriptProperties().setProperty(&quot;OPENAI_API_KEY&quot;, apiKey);\n}\n\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #88846F\">\/\/ Google Apps Script to Use ChatGPT API for Parsing Business Card Information<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #88846F\">\/\/ Function to parse business card information<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">parseBusinessCard<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> sheet <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">getActiveSpreadsheet<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getActiveSheet<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> dataRange <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;A2:A&quot;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getLastRow<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> data <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> dataRange.<\/span><span style=\"color: #A6E22E\">getValues<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  data.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">((<\/span><span style=\"color: #FD971F; font-style: italic\">row<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">index<\/span><span style=\"color: #F8F8F2\">) <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> cardInfo <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> row[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> rowIndex <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> index <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">; <\/span><span style=\"color: #88846F\">\/\/ Adjust for the header row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> isRowAlreadyParsed <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">`B<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">rowIndex<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">:L<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">rowIndex<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">`<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValues<\/span><span style=\"color: #F8F8F2\">()[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">].<\/span><span style=\"color: #A6E22E\">some<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">cell<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> cell <\/span><span style=\"color: #F92672\">!==<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;&quot;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #88846F\">\/\/ Process only rows with data in Column A and not already parsed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (cardInfo <\/span><span style=\"color: #F92672\">&amp;&amp;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">isRowAlreadyParsed) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> parsedData <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getChatGPTParsedData<\/span><span style=\"color: #F8F8F2\">(sheet, cardInfo);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #A6E22E\">updateSheetWithParsedData<\/span><span style=\"color: #F8F8F2\">(sheet, rowIndex, parsedData);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #88846F\">\/\/ Function to retrieve parsed data from ChatGPT API<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getChatGPTParsedData<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">sheet<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">cardInfo<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> apiKey <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> PropertiesService.<\/span><span style=\"color: #A6E22E\">getScriptProperties<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getProperty<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;OPENAI_API_KEY&quot;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> url <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;https:\/\/api.openai.com\/v1\/chat\/completions&quot;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> headers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;A1:L1&quot;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValues<\/span><span style=\"color: #F8F8F2\">()[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> headersJson <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> headers.<\/span><span style=\"color: #A6E22E\">reduce<\/span><span style=\"color: #F8F8F2\">((<\/span><span style=\"color: #FD971F; font-style: italic\">acc<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">header<\/span><span style=\"color: #F8F8F2\">) <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    acc[header] <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;&quot;<\/span><span style=\"color: #F8F8F2\">; <\/span><span style=\"color: #88846F\">\/\/ Initialize JSON structure with empty values<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> acc;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }, {});<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> messages <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;role&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">&quot;user&quot;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;content&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">`Please parse the following business card information into the specified JSON format: <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">JSON.<\/span><span style=\"color: #A6E22E\">stringify<\/span><span style=\"color: #F8F8F2\">(headersJson)<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">: <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">cardInfo<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">`<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  ];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> options <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&quot;method&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">&quot;post&quot;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&quot;headers&quot;<\/span><span style=\"color: #F8F8F2\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;Authorization&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">`Bearer <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">apiKey<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">`<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;Content-Type&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">&quot;application\/json&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&quot;payload&quot;<\/span><span style=\"color: #F8F8F2\">: JSON.<\/span><span style=\"color: #A6E22E\">stringify<\/span><span style=\"color: #F8F8F2\">({<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;model&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">&quot;gpt-4&quot;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;messages&quot;<\/span><span style=\"color: #F8F8F2\">: messages,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;max_tokens&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #AE81FF\">500<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;temperature&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #AE81FF\">0.7<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    })<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">try<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> response <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> UrlFetchApp.<\/span><span style=\"color: #A6E22E\">fetch<\/span><span style=\"color: #F8F8F2\">(url, options);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> json <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> JSON.<\/span><span style=\"color: #A6E22E\">parse<\/span><span style=\"color: #F8F8F2\">(response.<\/span><span style=\"color: #A6E22E\">getContentText<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> parsedData <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> JSON.<\/span><span style=\"color: #A6E22E\">parse<\/span><span style=\"color: #F8F8F2\">(json.choices[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">].message.content.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> parsedData;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  } <\/span><span style=\"color: #F92672\">catch<\/span><span style=\"color: #F8F8F2\"> (error) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    Logger.<\/span><span style=\"color: #A6E22E\">log<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;Error while fetching data from ChatGPT API: &quot;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> error);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">null<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #88846F\">\/\/ Function to update the spreadsheet with parsed data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">updateSheetWithParsedData<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">sheet<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">rowIndex<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">parsedData<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (parsedData) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> headers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;A1:L1&quot;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValues<\/span><span style=\"color: #F8F8F2\">()[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    headers.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">((<\/span><span style=\"color: #FD971F; font-style: italic\">header<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">index<\/span><span style=\"color: #F8F8F2\">) <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(rowIndex, index <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(parsedData[header] <\/span><span style=\"color: #F92672\">||<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;&quot;<\/span><span style=\"color: #F8F8F2\">); <\/span><span style=\"color: #88846F\">\/\/ Populate columns with parsed data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #88846F\">\/\/ Function to set the ChatGPT API key in script properties<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">setApiKey<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> apiKey <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;YOUR_API_KEY_HERE&quot;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  PropertiesService.<\/span><span style=\"color: #A6E22E\">getScriptProperties<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">setProperty<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;OPENAI_API_KEY&quot;<\/span><span style=\"color: #F8F8F2\">, apiKey);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"swell-block-accordion u-mb-ctrl u-mb-60\">\n<details class=\"swell-block-accordion__item\" data-swl-acc=\"wrapper\"><summary class=\"swell-block-accordion__title\" data-swl-acc=\"header\"><span class=\"swell-block-accordion__label\">Script Description<\/span><span class=\"swell-block-accordion__icon c-switchIconBtn\" data-swl-acc=\"icon\" aria-hidden=\"true\" data-opened=\"false\"><i class=\"__icon--closed icon-caret-down\"><\/i><i class=\"__icon--opened icon-caret-up\"><\/i><\/span><\/summary><div class=\"swell-block-accordion__body\" data-swl-acc=\"body\">\n<dl class=\"swell-block-dl\">\n<dt class=\"swell-block-dl__dt\"><strong>Script Overview<\/strong><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd u-mb-ctrl u-mb-40\">\n<p>This script uses the ChatGPT API to analyze business card information summarized in a Google Spreadsheet and classify it into specific fields, such as <strong>Company Name<\/strong>, <strong>Department<\/strong>, <strong>Job Title<\/strong>, and <strong>Name<\/strong>. The classified data is then entered into their respective columns in the spreadsheet.<\/p>\n\n\n\n<p>The business card information is initially stored in a single cell, separated by line breaks. When the script is executed, each piece of information is distributed to the corresponding fields.<\/p>\n\n\n\n<p>Additionally, rows that have already been classified are skipped to avoid duplicate processing.<\/p>\n\n\n\n<p>For this example, the ChatGPT model and token count are configured as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ChatGPT Model Used<\/strong>: GPT-4<\/li>\n\n\n\n<li><strong>Maximum Token Count<\/strong>: 500<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\"><strong><code>parseBusinessCard()<\/code> Function: Analyze Business Card Information<\/strong><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Function to parse business card information\nfunction parseBusinessCard() {\n  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();\n  const dataRange = sheet.getRange(&quot;A2:A&quot; + sheet.getLastRow());\n  const data = dataRange.getValues();\n\n  data.forEach((row, index) =&gt; {\n    const cardInfo = row[0];\n    const rowIndex = index + 2; \/\/ Adjust for the header row\n    const isRowAlreadyParsed = sheet.getRange(`B${rowIndex}:L${rowIndex}`).getValues()[0].some(cell =&gt; cell !== &quot;&quot;);\n\n    \/\/ Process only rows with data in Column A and not already parsed\n    if (cardInfo &amp;&amp; !isRowAlreadyParsed) {\n      const parsedData = getChatGPTParsedData(sheet, cardInfo);\n      updateSheetWithParsedData(sheet, rowIndex, parsedData);\n    }\n  });\n}\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #88846F\">\/\/ Function to parse business card information<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">parseBusinessCard<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> sheet <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">getActiveSpreadsheet<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getActiveSheet<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> dataRange <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;A2:A&quot;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getLastRow<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> data <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> dataRange.<\/span><span style=\"color: #A6E22E\">getValues<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  data.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">((<\/span><span style=\"color: #FD971F; font-style: italic\">row<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">index<\/span><span style=\"color: #F8F8F2\">) <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> cardInfo <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> row[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> rowIndex <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> index <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">; <\/span><span style=\"color: #88846F\">\/\/ Adjust for the header row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> isRowAlreadyParsed <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">`B<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">rowIndex<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">:L<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">rowIndex<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">`<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValues<\/span><span style=\"color: #F8F8F2\">()[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">].<\/span><span style=\"color: #A6E22E\">some<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">cell<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> cell <\/span><span style=\"color: #F92672\">!==<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;&quot;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #88846F\">\/\/ Process only rows with data in Column A and not already parsed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (cardInfo <\/span><span style=\"color: #F92672\">&amp;&amp;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">isRowAlreadyParsed) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> parsedData <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getChatGPTParsedData<\/span><span style=\"color: #F8F8F2\">(sheet, cardInfo);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #A6E22E\">updateSheetWithParsedData<\/span><span style=\"color: #F8F8F2\">(sheet, rowIndex, parsedData);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>dataRange<\/code><\/strong>: Retrieves data from Column A in the spreadsheet (from A2 to the last row).<\/li>\n\n\n\n<li><strong><code>data.forEach<\/code><\/strong>: Iterates through each row of data in Column A and processes it sequentially.<\/li>\n\n\n\n<li><strong><code>isRowAlreadyParsed<\/code><\/strong>: Skips rows if any cells in Columns B to L already contain data.<\/li>\n\n\n\n<li><strong><code>getChatGPTParsedData()<\/code><\/strong>: Calls the ChatGPT API and returns the business card information as a JSON object, with the data categorized into specific fields.<\/li>\n\n\n\n<li><strong><code>updateSheetWithParsedData()<\/code><\/strong>: Updates the spreadsheet with the parsed data from the API response.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\"><strong><code>getChatGPTParsedData(sheet, cardInfo)<\/code> Function: Retrieve Parsed Data from the ChatGPT API<\/strong><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Function to retrieve parsed data from ChatGPT API\nfunction getChatGPTParsedData(sheet, cardInfo) {\n  const apiKey = PropertiesService.getScriptProperties().getProperty(&quot;OPENAI_API_KEY&quot;);\n  const url = &quot;https:\/\/api.openai.com\/v1\/chat\/completions&quot;;\n  const headers = sheet.getRange(&quot;A1:L1&quot;).getValues()[0];\n  const headersJson = headers.reduce((acc, header) =&gt; {\n    acc[header] = &quot;&quot;; \/\/ Initialize JSON structure with empty values\n    return acc;\n  }, {});\n\n  const messages = [\n    {\n      &quot;role&quot;: &quot;user&quot;,\n      &quot;content&quot;: `Please parse the following business card information into the specified JSON format: ${JSON.stringify(headersJson)}: ${cardInfo}`\n    }\n  ];\n\n  const options = {\n    &quot;method&quot;: &quot;post&quot;,\n    &quot;headers&quot;: {\n      &quot;Authorization&quot;: `Bearer ${apiKey}`,\n      &quot;Content-Type&quot;: &quot;application\/json&quot;\n    },\n    &quot;payload&quot;: JSON.stringify({\n      &quot;model&quot;: &quot;gpt-4&quot;,\n      &quot;messages&quot;: messages,\n      &quot;max_tokens&quot;: 500,\n      &quot;temperature&quot;: 0.7\n    })\n  };\n\n  try {\n    const response = UrlFetchApp.fetch(url, options);\n    const json = JSON.parse(response.getContentText());\n    const parsedData = JSON.parse(json.choices[0].message.content.trim());\n    return parsedData;\n  } catch (error) {\n    Logger.log(&quot;Error while fetching data from ChatGPT API: &quot; + error);\n    return null;\n  }\n}\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #88846F\">\/\/ Function to retrieve parsed data from ChatGPT API<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getChatGPTParsedData<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">sheet<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">cardInfo<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> apiKey <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> PropertiesService.<\/span><span style=\"color: #A6E22E\">getScriptProperties<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getProperty<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;OPENAI_API_KEY&quot;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> url <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;https:\/\/api.openai.com\/v1\/chat\/completions&quot;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> headers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;A1:L1&quot;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValues<\/span><span style=\"color: #F8F8F2\">()[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> headersJson <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> headers.<\/span><span style=\"color: #A6E22E\">reduce<\/span><span style=\"color: #F8F8F2\">((<\/span><span style=\"color: #FD971F; font-style: italic\">acc<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">header<\/span><span style=\"color: #F8F8F2\">) <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    acc[header] <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;&quot;<\/span><span style=\"color: #F8F8F2\">; <\/span><span style=\"color: #88846F\">\/\/ Initialize JSON structure with empty values<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> acc;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }, {});<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> messages <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;role&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">&quot;user&quot;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;content&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">`Please parse the following business card information into the specified JSON format: <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">JSON.<\/span><span style=\"color: #A6E22E\">stringify<\/span><span style=\"color: #F8F8F2\">(headersJson)<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">: <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">cardInfo<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">`<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  ];<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> options <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&quot;method&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">&quot;post&quot;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&quot;headers&quot;<\/span><span style=\"color: #F8F8F2\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;Authorization&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">`Bearer <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">apiKey<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">`<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;Content-Type&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">&quot;application\/json&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&quot;payload&quot;<\/span><span style=\"color: #F8F8F2\">: JSON.<\/span><span style=\"color: #A6E22E\">stringify<\/span><span style=\"color: #F8F8F2\">({<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;model&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #E6DB74\">&quot;gpt-4&quot;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;messages&quot;<\/span><span style=\"color: #F8F8F2\">: messages,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;max_tokens&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #AE81FF\">500<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #E6DB74\">&quot;temperature&quot;<\/span><span style=\"color: #F8F8F2\">: <\/span><span style=\"color: #AE81FF\">0.7<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    })<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">try<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> response <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> UrlFetchApp.<\/span><span style=\"color: #A6E22E\">fetch<\/span><span style=\"color: #F8F8F2\">(url, options);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> json <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> JSON.<\/span><span style=\"color: #A6E22E\">parse<\/span><span style=\"color: #F8F8F2\">(response.<\/span><span style=\"color: #A6E22E\">getContentText<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> parsedData <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> JSON.<\/span><span style=\"color: #A6E22E\">parse<\/span><span style=\"color: #F8F8F2\">(json.choices[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">].message.content.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> parsedData;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  } <\/span><span style=\"color: #F92672\">catch<\/span><span style=\"color: #F8F8F2\"> (error) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    Logger.<\/span><span style=\"color: #A6E22E\">log<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;Error while fetching data from ChatGPT API: &quot;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> error);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">null<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>headers<\/code><\/strong>: Retrieves the headers (field names) from the first row (A1) of the spreadsheet. These headers define the format for categorizing the data.<\/li>\n\n\n\n<li><strong><code>messages<\/code><\/strong>: Creates the message to be sent to the API. This message includes instructions to categorize the business card information into JSON format based on the specified fields.<\/li>\n\n\n\n<li><strong><code>UrlFetchApp.fetch()<\/code><\/strong>: Sends a request to the ChatGPT API and retrieves the analysis results.<\/li>\n\n\n\n<li><strong><code>parsedData<\/code><\/strong>: Parses the API response into JSON format and returns the business card information categorized into specific fields.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\"><code>updateSheetWithParsedData(sheet, rowIndex, parsedData)<\/code>Function: Update the Spreadsheet with Parsed Data<\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Function to update the spreadsheet with parsed data\nfunction updateSheetWithParsedData(sheet, rowIndex, parsedData) {\n  if (parsedData) {\n    const headers = sheet.getRange(&quot;A1:L1&quot;).getValues()[0];\n    headers.forEach((header, index) =&gt; {\n      sheet.getRange(rowIndex, index + 1).setValue(parsedData[header] || &quot;&quot;); \/\/ Populate columns with parsed data\n    });\n  }\n}\n\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #88846F\">\/\/ Function to update the spreadsheet with parsed data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">updateSheetWithParsedData<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">sheet<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">rowIndex<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">parsedData<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (parsedData) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> headers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;A1:L1&quot;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValues<\/span><span style=\"color: #F8F8F2\">()[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    headers.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">((<\/span><span style=\"color: #FD971F; font-style: italic\">header<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">index<\/span><span style=\"color: #F8F8F2\">) <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(rowIndex, index <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(parsedData[header] <\/span><span style=\"color: #F92672\">||<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;&quot;<\/span><span style=\"color: #F8F8F2\">); <\/span><span style=\"color: #88846F\">\/\/ Populate columns with parsed data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    });<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code><strong>headers<\/strong><\/code>: Retrieves the header fields from the first row of the spreadsheet. These headers are used to determine where to input the parsed data in the corresponding columns.<\/li>\n\n\n\n<li><code><strong>sheet.getRange().setValue()<\/strong><\/code>: Inputs the parsed data into the appropriate cells in the spreadsheet based on the headers.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\"><code>setApiKey()<\/code><strong>Function to Set the ChatGPT API Key in Script Properties<\/strong><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"\/\/ Function to set the ChatGPT API key in script properties\nfunction setApiKey() {\n  const apiKey = &quot;YOUR_API_KEY_HERE&quot;;\n  PropertiesService.getScriptProperties().setProperty(&quot;OPENAI_API_KEY&quot;, apiKey);\n}\n\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #88846F\">\/\/ Function to set the ChatGPT API key in script properties<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">setApiKey<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> apiKey <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;YOUR_API_KEY_HERE&quot;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  PropertiesService.<\/span><span style=\"color: #A6E22E\">getScriptProperties<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">setProperty<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;OPENAI_API_KEY&quot;<\/span><span style=\"color: #F8F8F2\">, apiKey);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This function is used to save the ChatGPT API key into the script properties.<\/li>\n\n\n\n<li>By setting the API key, you enable the script to communicate with the ChatGPT API.<\/li>\n<\/ul>\n<\/dd>\n<\/dl>\n<\/div><\/details>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\">Save the Script<\/div><div class=\"swell-block-step__body\"><div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-large\"><img decoding=\"async\" width=\"1024\" height=\"428\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-108-1024x428.png\" alt=\"\" class=\"wp-image-17290\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-108-1024x428.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-108-300x125.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-108-768x321.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-108.png 1450w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Once you&#8217;ve written the code, save it with an appropriate name.<\/p>\n\n\n\n<p>Example: CardSort<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\">Run the Script<\/div><div class=\"swell-block-step__body\"><div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-large\"><img decoding=\"async\" width=\"1024\" height=\"428\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-109-1024x428.png\" alt=\"\" class=\"wp-image-17291\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-109-1024x428.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-109-300x125.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-109-768x321.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-109.png 1450w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"u-mb-ctrl u-mb-40\">Run the script to distribute the business card data from Column A into the corresponding columns for each field.<\/p>\n\n\n\n<div class=\"wp-block-group is-style-big_icon_memo u-mb-ctrl u-mb-60\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>If you&#8217;re running the script for the first time, you need to authorize it.<\/p>\n\n\n\n<p><strong>Therefore, press &#8220;<strong>Review Permissions.<\/strong>&#8220;<\/strong><\/p>\n\n\n<div class=\"wp-block-image u-mb-ctrl u-mb-50\">\n<figure class=\"alignleft size-full\"><img decoding=\"async\" width=\"882\" height=\"345\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-79.png\" alt=\"\" class=\"wp-image-15938\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-79.png 882w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-79-300x117.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-79-768x300.png 768w\" sizes=\"(max-width: 882px) 100vw, 882px\" \/><\/figure>\n<\/div>\n\n\n<div class=\"swell-block-accordion\">\n<details class=\"swell-block-accordion__item\" data-swl-acc=\"wrapper\"><summary class=\"swell-block-accordion__title\" data-swl-acc=\"header\"><span class=\"swell-block-accordion__label\">Detailed Authorization Steps<\/span><span class=\"swell-block-accordion__icon c-switchIconBtn\" data-swl-acc=\"icon\" aria-hidden=\"true\" data-opened=\"false\"><i class=\"__icon--closed icon-caret-down\"><\/i><i class=\"__icon--opened icon-caret-up\"><\/i><\/span><\/summary><div class=\"swell-block-accordion__body\" data-swl-acc=\"body\">\n<p><strong>Press &#8220;Advanced.&#8221;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full u-mb-ctrl u-mb-50\"><img decoding=\"async\" width=\"1272\" height=\"688\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/188993dfac23ed4b35c326d75de2796d.jpg\" alt=\"\" class=\"wp-image-15939\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/188993dfac23ed4b35c326d75de2796d.jpg 1272w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/188993dfac23ed4b35c326d75de2796d-300x162.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/188993dfac23ed4b35c326d75de2796d-1024x554.jpg 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/188993dfac23ed4b35c326d75de2796d-768x415.jpg 768w\" sizes=\"(max-width: 1272px) 100vw, 1272px\" \/><\/figure>\n\n\n\n\n\n\n\n<p><strong>Press &#8220;Go to Untitled project (Unsafe).&#8221;<\/strong><\/p>\n\n\n<div class=\"wp-block-image u-mb-ctrl u-mb-50\">\n<figure class=\"alignleft size-full\"><img decoding=\"async\" width=\"1305\" height=\"893\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/b7775751f92380510b389302eaafe1b9.jpg\" alt=\"\" class=\"wp-image-15940\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/b7775751f92380510b389302eaafe1b9.jpg 1305w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/b7775751f92380510b389302eaafe1b9-300x205.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/b7775751f92380510b389302eaafe1b9-1024x701.jpg 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/b7775751f92380510b389302eaafe1b9-768x526.jpg 768w\" sizes=\"(max-width: 1305px) 100vw, 1305px\" \/><\/figure>\n<\/div>\n\n\n<p><strong>After that, press &#8220;Allow.&#8221;<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full is-resized\"><img decoding=\"async\" width=\"955\" height=\"543\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/7ebb34b4d2c42fa532ad1c35c1ec1049.jpg\" alt=\"\" class=\"wp-image-15941\" style=\"width:566px;height:auto\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/7ebb34b4d2c42fa532ad1c35c1ec1049.jpg 955w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/7ebb34b4d2c42fa532ad1c35c1ec1049-300x171.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/7ebb34b4d2c42fa532ad1c35c1ec1049-768x437.jpg 768w\" sizes=\"(max-width: 955px) 100vw, 955px\" \/><\/figure>\n<\/div>\n\n\n\n<\/div><\/details>\n<\/div>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\"><strong>Verify That the Business Card Data Has Been Classified<\/strong><\/div><div class=\"swell-block-step__body\">\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"281\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-107-1024x281.png\" alt=\"\" class=\"wp-image-17289\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-107-1024x281.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-107-300x82.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-107-768x211.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-107-1536x422.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-107.png 1800w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The business card data will be categorized and input into the corresponding fields.<br>Afterward, review the entered data manually to ensure there are no issues.<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading u-mb-ctrl u-mb-40\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p>In this article, we demonstrated how to use the ChatGPT API to distribute business card data from Column A of a spreadsheet into specific fields.<\/p>\n\n\n\n<p>While the final categorized data should be reviewed manually for accuracy, this method allows you to efficiently organize business card information.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-50\">The approach using the ChatGPT API can be applied not only to business card management but also to other categorization tasks, making it a versatile tool for data organization.<\/p>\n\n\n<div class=\"swell-block-postLink u-mb-ctrl u-mb-50\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/f6c88dad5d673ac82ae03f91f1e0b846-300x158.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/84office.jp\/en\/chatgpt-spreadsheet\/\">Link ChatGPT with Google Sheets: Boost Efficiency Using Google Apps Script and ChatGPT API<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">If you want to integrate ChatGPT and spreadsheets to make your work more efficient, but don&#8217;t know how to do it, this article will show you the basic way to &#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n<div class=\"p-postListWrap u-mb-ctrl u-mb-50\"><ul class=\"p-postList -type-card -pc-col3 -sp-col1\"><li class=\"p-postList__item\">\n\t<a href=\"https:\/\/84office.jp\/en\/gas-pop-up\/\" class=\"p-postList__link\">\n\t\t<div class=\"p-postList__thumb c-postThumb\">\n\t<figure class=\"c-postThumb__figure\">\n\t\t<img decoding=\"async\" width=\"1024\" height=\"538\"  src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/f7db322d686e3090883637bf91b1d3ac-1024x538.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/f7db322d686e3090883637bf91b1d3ac-1024x538.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/f7db322d686e3090883637bf91b1d3ac-300x158.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/f7db322d686e3090883637bf91b1d3ac-768x403.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/f7db322d686e3090883637bf91b1d3ac.png 1200w\" sizes=\"auto, (min-width: 960px) 400px, 100vw\" loading=\"lazy\" >\t<\/figure>\n\t\t\t<span class=\"c-postThumb__cat icon-folder\" data-cat-id=\"12\">Google Sheets<\/span>\n\t<\/div>\n\t\t\t\t\t<div class=\"p-postList__body\">\n\t\t\t\t<h2 class=\"p-postList__title\">Enhance User Interaction with Google Apps Script: How to Add Confirmation Pop-Ups to Prevent Mistakes<\/h2>\t\t\t\t\t\t\t\t<div class=\"p-postList__meta\">\n\t\t\t\t\t<div class=\"p-postList__times c-postTimes u-thin\">\n\t<time class=\"c-postTimes__posted icon-posted\" datetime=\"2024-12-31\" aria-label=\"\u516c\u958b\u65e5\">2024\u5e7412\u670831\u65e5<\/time><\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/a>\n<\/li>\n<li class=\"p-postList__item\">\n\t<a href=\"https:\/\/84office.jp\/en\/google-sheets-information-sharing-easy\/\" class=\"p-postList__link\">\n\t\t<div class=\"p-postList__thumb c-postThumb\">\n\t<figure class=\"c-postThumb__figure\">\n\t\t<img decoding=\"async\" width=\"1024\" height=\"538\"  src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/8d7f06d5148ba7af39f6cf06f4d9a1b9-1024x538.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/8d7f06d5148ba7af39f6cf06f4d9a1b9-1024x538.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/8d7f06d5148ba7af39f6cf06f4d9a1b9-300x158.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/8d7f06d5148ba7af39f6cf06f4d9a1b9-768x403.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/8d7f06d5148ba7af39f6cf06f4d9a1b9.png 1200w\" sizes=\"auto, (min-width: 960px) 400px, 100vw\" loading=\"lazy\" >\t<\/figure>\n\t\t\t<span class=\"c-postThumb__cat icon-folder\" data-cat-id=\"12\">Google Sheets<\/span>\n\t<\/div>\n\t\t\t\t\t<div class=\"p-postList__body\">\n\t\t\t\t<h2 class=\"p-postList__title\">Google Sheets Tips: Easily Share Information with the Cell Link Feature<\/h2>\t\t\t\t\t\t\t\t<div class=\"p-postList__meta\">\n\t\t\t\t\t<div class=\"p-postList__times c-postTimes u-thin\">\n\t<time class=\"c-postTimes__posted icon-posted\" datetime=\"2025-01-07\" aria-label=\"\u516c\u958b\u65e5\">2025\u5e741\u67087\u65e5<\/time><\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/a>\n<\/li>\n<li class=\"p-postList__item\">\n\t<a href=\"https:\/\/84office.jp\/en\/chatgpt-spreadsheet\/\" class=\"p-postList__link\">\n\t\t<div class=\"p-postList__thumb c-postThumb\">\n\t<figure class=\"c-postThumb__figure\">\n\t\t<img decoding=\"async\" width=\"1024\" height=\"538\"  src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/f6c88dad5d673ac82ae03f91f1e0b846-1024x538.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/f6c88dad5d673ac82ae03f91f1e0b846-1024x538.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/f6c88dad5d673ac82ae03f91f1e0b846-300x158.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/f6c88dad5d673ac82ae03f91f1e0b846-768x403.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/f6c88dad5d673ac82ae03f91f1e0b846.png 1200w\" sizes=\"auto, (min-width: 960px) 400px, 100vw\" loading=\"lazy\" >\t<\/figure>\n\t\t\t<span class=\"c-postThumb__cat icon-folder\" data-cat-id=\"12\">Google Sheets<\/span>\n\t<\/div>\n\t\t\t\t\t<div class=\"p-postList__body\">\n\t\t\t\t<h2 class=\"p-postList__title\">Link ChatGPT with Google Sheets: Boost Efficiency Using Google Apps Script and ChatGPT API<\/h2>\t\t\t\t\t\t\t\t<div class=\"p-postList__meta\">\n\t\t\t\t\t<div class=\"p-postList__times c-postTimes u-thin\">\n\t<time class=\"c-postTimes__posted icon-posted\" datetime=\"2024-11-23\" aria-label=\"\u516c\u958b\u65e5\">2024\u5e7411\u670823\u65e5<\/time><\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/a>\n<\/li>\n<\/ul><\/div>\n\n\n<p class=\"is-style-emboss_box has-swl-pale-02-background-color has-background\">Our company offers support for improving work efficiency through the use of Google Apps Script. <br>If you need assistance with Google Apps Script customization or error resolution, please feel free to contact us. <br>We are fully committed to supporting your business improvements.<br><br><a href=\"https:\/\/84office.jp\/contact\/\">Contact us here<br><\/a><\/p>\n\n\n\n<script src=\"https:\/\/codoc.jp\/js\/cms.js\" data-css=\"rainbow\" data-usercode=\"pQLZofrBiA\" charset=\"UTF-8\" defer><\/script>\n <div id=\"codoc-entry-9lNr9PuMXQ\" class=\"codoc-entries\" data-without-body=\"1\" data-support-button-text=\"Support with a Tip\" data-support-message=\"We will keep offering tools and information to boost work efficiency. Your support helps us provide even better content.\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>In the previous article, we demonstrated how to use OCR (Optical Character Recognition) and GAS to transfer bu [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":17293,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","_locale":"en_US","_original_post":"https:\/\/84office.jp\/?p=15371","footnotes":""},"categories":[12],"tags":[],"class_list":["post-17282","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-12","en-US"],"_links":{"self":[{"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts\/17282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/comments?post=17282"}],"version-history":[{"count":2,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts\/17282\/revisions"}],"predecessor-version":[{"id":17292,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts\/17282\/revisions\/17292"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/media\/17293"}],"wp:attachment":[{"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/media?parent=17282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/categories?post=17282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/tags?post=17282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}