{"id":15962,"date":"2024-11-15T01:42:34","date_gmt":"2024-11-14T16:42:34","guid":{"rendered":"https:\/\/84office.jp\/?p=15962"},"modified":"2024-11-15T02:11:42","modified_gmt":"2024-11-14T17:11:42","slug":"gas%ef%bd%b0send-email","status":"publish","type":"post","link":"https:\/\/84office.jp\/en\/gas%ef%bd%b0send-email\/","title":{"rendered":"Boost Productivity: Automate Gmail to Multiple Recipients with Google Sheets and Apps Script"},"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>Recommended for<\/span><\/div><div class=\"cap_box_content\">\n<ul class=\"wp-block-list\">\n<li>For those who find sending Gmail each time to be cumbersome<\/li>\n\n\n\n<li>For those who want to send emails to multiple recipients by only changing part of the message<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<p>When sending emails to customers or contacts managed in a spreadsheet, do you find yourself sending similar content to each one individually?<\/p>\n\n\n\n<p>For example, if you need to send emails to multiple recipients by only changing the meeting schedule in the email body, doing it manually can lead to mistakes and take a lot of time.<\/p>\n\n\n\n<p>In such cases, it would be convenient to have a method to automatically send emails using Google Sheets.<\/p>\n\n\n\n<p>In this article, we will introduce how to automate email sending using Google Sheets and Google Apps Script.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-60\">This allows you to focus on other important tasks without spending time on sending emails every time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Completed example<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"314\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-85-1024x314.png\" alt=\"\" class=\"wp-image-15980\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-85-1024x314.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-85-300x92.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-85-768x236.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-85-1536x471.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-85.png 1862w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong><span class=\"swl-fz u-fz-l\">Gmail Content<\/span><\/strong><\/p>\n\n\n<div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-full is-resized\"><img decoding=\"async\" width=\"956\" height=\"549\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/8aa8486baf2e9735f99466e0f25ca0d4-1.jpg\" alt=\"\" class=\"wp-image-15977\" style=\"width:661px;height:auto\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/8aa8486baf2e9735f99466e0f25ca0d4-1.jpg 956w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/8aa8486baf2e9735f99466e0f25ca0d4-1-300x172.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/8aa8486baf2e9735f99466e0f25ca0d4-1-768x441.jpg 768w\" sizes=\"(max-width: 956px) 100vw, 956px\" \/><\/figure>\n<\/div>\n\n\n<p>Here is a completed example of how to automatically send emails using the spreadsheet and Google Apps Script we will create this time.<\/p>\n\n\n\n<p>Based on the information for each recipient entered in the Google Sheet, a portion of the email body is automatically customized, and then the email is sent via Gmail.<\/p>\n\n\n\n<p>In this example, the changes to be inserted into the email body include the <strong>name<\/strong>, <strong>meeting date<\/strong>, and <strong>meeting time<\/strong>.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">A pre-prepared email draft is duplicated, and these pieces of information are automatically replaced, allowing for personalized emails to be sent.<\/p>\n\n\n\n<p><strong>Google Sheet Input Fields<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table u-mb-ctrl u-mb-40\"><table class=\"has-swl-pale-03-background-color has-background has-fixed-layout\"><tbody><tr><td><strong>Column A  (First Name)<\/strong><\/td><td>Enter the recipient&#8217;s first name. This name will be inserted into the email body sent via Gmail.<\/td><\/tr><tr><td><strong><strong>Column B  (Last Name)<\/strong><\/strong><\/td><td>Enter the last name. In this example, it will not appear in the email body.<\/td><\/tr><tr><td><strong>Column C (Email Address)<\/strong><\/td><td>Enter the recipient&#8217;s email address.<\/td><\/tr><tr><td><strong>Column D (Meeting Date)<\/strong><\/td><td>Enter the meeting date.<\/td><\/tr><tr><td><strong>Column E (Meeting Time)<\/strong><\/td><td>Enter the meeting time.<\/td><\/tr><tr><td><strong>Column F (Check)<\/strong><\/td><td>Check the box for individuals who are the target of the email. <br>This column is used to select whether to send the email or not.<\/td><\/tr><tr><td><strong>Column G (Sent Time)<\/strong><\/td><td>The timestamp of when the email was sent is automatically recorded. <br>This allows you to verify whether the email was sent.<\/td><\/tr><tr><td><strong>Sheet Name<\/strong><\/td><td>As an example, the name &#8220;<strong>Email Sending List<\/strong>&#8221; is used.<br>This sheet name will be used when executing the Google Apps Script.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>How to Use the Check Box in Column F<\/strong><\/p>\n\n\n\n<p>By using the checkboxes in Column F, you can easily select the recipients to whom the emails will be sent.<\/p>\n\n\n\n<p>For example, if you want to send emails to Mr. Smith and Mr. Johnson but want to send one to Mr. Brown later, you would uncheck Mr. Brown.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-60\">Emails are sent only for the rows where the checkbox is checked, and the send time is recorded in Column G after the email is sent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Google Apps Script Settings<\/h2>\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=\"function sendEmails() {\n  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Email Sending List');  \/\/ Specify the tab name &quot;Email Sending List&quot;\n  var range = sheet.getRange(&quot;A2:G&quot;);  \/\/ Get the data range from A2 to column G\n  var data = range.getDisplayValues();  \/\/ Get the displayed data within the range\n  var draftId = getDraftIdBySubject('Regarding Meeting Schedule');  \/\/ Email draft subject\n  \n  if (!draftId) {\n    Logger.log(&quot;Error: Draft not found.&quot;);\n    return;  \/\/ Exit if the draft is not found\n  }\n\n  data.forEach(function(row, index) {\n    var sentTime = row[6];  \/\/ Column G: Sent Time\n    if (row[5] === 'TRUE' &amp;&amp; !sentTime) {  \/\/ Check if the checkbox in column F is checked\n      var recipient = row[2];  \/\/ Column C: Email Address\n      var subject = 'Regarding Meeting Schedule';  \/\/ Subject of the email to be sent\n      var body = getDraftMessageBody(draftId);  \/\/ Get the draft message body\n      var attachments = getDraftAttachments(draftId);  \/\/ Get the draft attachments\n\n      \/\/ Replace placeholders with data from the spreadsheet\n      body = body.replace(\/{First Name}\/g, row[0])       \/\/ Column A: First Name\n                 .replace(\/{Meeting Date}\/g, row[3])     \/\/ Column D: Meeting Date\n                 .replace(\/{Meeting Time}\/g, row[4]);    \/\/ Column E: Meeting Time\n      \n      \/\/ Send email using GmailApp.sendEmail (with HTML body)\n      GmailApp.sendEmail(recipient, subject, '', {\n        htmlBody: body,\n        attachments: attachments  \/\/ Add attachments to the email\n      });\n\n      \/\/ Record the sent time in Column G\n      var userTimezone = Session.getScriptTimeZone();  \/\/ Get the user's script timezone\n      var localTime = Utilities.formatDate(new Date(), userTimezone, 'MM\/dd\/yyyy HH:mm:ss');\n      sheet.getRange(index + 2, 7).setValue(localTime);  \/\/ Record the sent time in Column G\n    }\n  });\n}\n\n\/\/ Function to get draft attachments\nfunction getDraftAttachments(draftId) {\n  var draft = GmailApp.getDraft(draftId);\n  var message = draft.getMessage();\n  return message.getAttachments();  \/\/ Get attachments\n}\n\n\/\/ Function to get draft ID by specified subject\nfunction getDraftIdBySubject(subject) {\n  var drafts = GmailApp.getDrafts();\n  for (var i = 0; i &lt; drafts.length; i++) {\n    if (drafts[i].getMessage().getSubject() === subject) {\n      return drafts[i].getId();\n    }\n  }\n  Logger.log(&quot;Error: No draft found with subject '&quot; + subject + &quot;'.&quot;);\n  return null;  \/\/ Return null if no draft is found\n}\n\n\/\/ Function to get the draft message body\nfunction getDraftMessageBody(draftId) {\n  var draft = GmailApp.getDraft(draftId);\n  var message = draft.getMessage();\n  return message.getBody();  \/\/ Get the draft HTML body\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: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">sendEmails<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/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\">getSheetByName<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;Email Sending List&#39;<\/span><span style=\"color: #F8F8F2\">);  <\/span><span style=\"color: #88846F\">\/\/ Specify the tab name &quot;Email Sending List&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> range <\/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:G&quot;<\/span><span style=\"color: #F8F8F2\">);  <\/span><span style=\"color: #88846F\">\/\/ Get the data range from A2 to column G<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> data <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> range.<\/span><span style=\"color: #A6E22E\">getDisplayValues<\/span><span style=\"color: #F8F8F2\">();  <\/span><span style=\"color: #88846F\">\/\/ Get the displayed data within the range<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> draftId <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftIdBySubject<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;Regarding Meeting Schedule&#39;<\/span><span style=\"color: #F8F8F2\">);  <\/span><span style=\"color: #88846F\">\/\/ Email draft subject<\/span><\/span>\n<span class=\"line\"><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\"> (<\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">draftId) {<\/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: Draft not found.&quot;<\/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\">;  <\/span><span style=\"color: #88846F\">\/\/ Exit if the draft is not found<\/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\">  data.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #66D9EF; font-style: italic\">function<\/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>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> sentTime <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> row[<\/span><span style=\"color: #AE81FF\">6<\/span><span style=\"color: #F8F8F2\">];  <\/span><span style=\"color: #88846F\">\/\/ Column G: Sent Time<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (row[<\/span><span style=\"color: #AE81FF\">5<\/span><span style=\"color: #F8F8F2\">] <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;TRUE&#39;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">&amp;&amp;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">sentTime) {  <\/span><span style=\"color: #88846F\">\/\/ Check if the checkbox in column F is checked<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> recipient <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> row[<\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">];  <\/span><span style=\"color: #88846F\">\/\/ Column C: Email Address<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> subject <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Regarding Meeting Schedule&#39;<\/span><span style=\"color: #F8F8F2\">;  <\/span><span style=\"color: #88846F\">\/\/ Subject of the email to be sent<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> body <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftMessageBody<\/span><span style=\"color: #F8F8F2\">(draftId);  <\/span><span style=\"color: #88846F\">\/\/ Get the draft message body<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> attachments <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftAttachments<\/span><span style=\"color: #F8F8F2\">(draftId);  <\/span><span style=\"color: #88846F\">\/\/ Get the draft attachments<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Replace placeholders with data from the spreadsheet<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      body <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> body.<\/span><span style=\"color: #A6E22E\">replace<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">\/{First Name}\/<\/span><span style=\"color: #F92672\">g<\/span><span style=\"color: #F8F8F2\">, row[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">])       <\/span><span style=\"color: #88846F\">\/\/ Column A: First Name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">                 .<\/span><span style=\"color: #A6E22E\">replace<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">\/{Meeting Date}\/<\/span><span style=\"color: #F92672\">g<\/span><span style=\"color: #F8F8F2\">, row[<\/span><span style=\"color: #AE81FF\">3<\/span><span style=\"color: #F8F8F2\">])     <\/span><span style=\"color: #88846F\">\/\/ Column D: Meeting Date<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">                 .<\/span><span style=\"color: #A6E22E\">replace<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">\/{Meeting Time}\/<\/span><span style=\"color: #F92672\">g<\/span><span style=\"color: #F8F8F2\">, row[<\/span><span style=\"color: #AE81FF\">4<\/span><span style=\"color: #F8F8F2\">]);    <\/span><span style=\"color: #88846F\">\/\/ Column E: Meeting Time<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Send email using GmailApp.sendEmail (with HTML body)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      GmailApp.<\/span><span style=\"color: #A6E22E\">sendEmail<\/span><span style=\"color: #F8F8F2\">(recipient, subject, <\/span><span style=\"color: #E6DB74\">&#39;&#39;<\/span><span style=\"color: #F8F8F2\">, {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        htmlBody: body,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        attachments: attachments  <\/span><span style=\"color: #88846F\">\/\/ Add attachments to the email<\/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: #88846F\">\/\/ Record the sent time in Column G<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> userTimezone <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> Session.<\/span><span style=\"color: #A6E22E\">getScriptTimeZone<\/span><span style=\"color: #F8F8F2\">();  <\/span><span style=\"color: #88846F\">\/\/ Get the user&#39;s script timezone<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> localTime <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> Utilities.<\/span><span style=\"color: #A6E22E\">formatDate<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #F92672\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">Date<\/span><span style=\"color: #F8F8F2\">(), userTimezone, <\/span><span style=\"color: #E6DB74\">&#39;MM\/dd\/yyyy HH:mm:ss&#39;<\/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\">(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: #AE81FF\">7<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(localTime);  <\/span><span style=\"color: #88846F\">\/\/ Record the sent time in Column G<\/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 get draft attachments<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftAttachments<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">draftId<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> draft <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> GmailApp.<\/span><span style=\"color: #A6E22E\">getDraft<\/span><span style=\"color: #F8F8F2\">(draftId);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> message <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> draft.<\/span><span style=\"color: #A6E22E\">getMessage<\/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\"> message.<\/span><span style=\"color: #A6E22E\">getAttachments<\/span><span style=\"color: #F8F8F2\">();  <\/span><span style=\"color: #88846F\">\/\/ Get attachments<\/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 get draft ID by specified subject<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftIdBySubject<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">subject<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> drafts <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> GmailApp.<\/span><span style=\"color: #A6E22E\">getDrafts<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">for<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> i <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">; i <\/span><span style=\"color: #F92672\">&lt;<\/span><span style=\"color: #F8F8F2\"> drafts.length; i<\/span><span style=\"color: #F92672\">++<\/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\"> (drafts[i].<\/span><span style=\"color: #A6E22E\">getMessage<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getSubject<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> subject) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> drafts[i].<\/span><span style=\"color: #A6E22E\">getId<\/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 style=\"color: #F8F8F2\">  Logger.<\/span><span style=\"color: #A6E22E\">log<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;Error: No draft found with subject &#39;&quot;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> subject <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;&#39;.&quot;<\/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\"> <\/span><span style=\"color: #AE81FF\">null<\/span><span style=\"color: #F8F8F2\">;  <\/span><span style=\"color: #88846F\">\/\/ Return null if no draft is found<\/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 get the draft message body<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftMessageBody<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">draftId<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> draft <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> GmailApp.<\/span><span style=\"color: #A6E22E\">getDraft<\/span><span style=\"color: #F8F8F2\">(draftId);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> message <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> draft.<\/span><span style=\"color: #A6E22E\">getMessage<\/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\"> message.<\/span><span style=\"color: #A6E22E\">getBody<\/span><span style=\"color: #F8F8F2\">();  <\/span><span style=\"color: #88846F\">\/\/ Get the draft HTML body<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\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\">\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u8aac\u660e<\/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\">Main Process\uff1a<code>sendEmails()<\/code><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<p><code>sendEmails()<\/code> is the main function that retrieves data from the Google Sheet and automatically sends emails corresponding to each row.<\/p>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Retrieving Spreadsheet 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=\"  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Email Sending List');  \/\/ Specify the tab name &quot;Email Sending List&quot;\n  var range = sheet.getRange(&quot;A2:G&quot;);  \/\/ Get the data range from A2 to column G\n  var data = range.getDisplayValues();  \/\/ Get the displayed data within the range\" 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: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/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\">getSheetByName<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;Email Sending List&#39;<\/span><span style=\"color: #F8F8F2\">);  <\/span><span style=\"color: #88846F\">\/\/ Specify the tab name &quot;Email Sending List&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> range <\/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:G&quot;<\/span><span style=\"color: #F8F8F2\">);  <\/span><span style=\"color: #88846F\">\/\/ Get the data range from A2 to column G<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> data <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> range.<\/span><span style=\"color: #A6E22E\">getDisplayValues<\/span><span style=\"color: #F8F8F2\">();  <\/span><span style=\"color: #88846F\">\/\/ Get the displayed data within the range<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Email Sending List')<\/code>: Specify and retrieve the sheet named &#8220;Email Sending List.&#8221;<\/li>\n\n\n\n<li><code>sheet.getRange(\"A2:G\")<\/code>: Retrieve data by specifying the range from A2 to column G.<br>This range includes the first name, email address, meeting date, meeting time, checkbox, and sent time.<\/li>\n\n\n\n<li><code>getDisplayValues()<\/code>: Retrieve the displayed values within the range in an array format.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Retrieving Draft Email<\/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=\"  var draftId = getDraftIdBySubject('Regarding Meeting Schedule');  \/\/ Email draft subject\n  \n  if (!draftId) {\n    Logger.log(&quot;Error: Draft not found.&quot;);\n    return;  \/\/ Exit if the draft is not found\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: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> draftId <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftIdBySubject<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;Regarding Meeting Schedule&#39;<\/span><span style=\"color: #F8F8F2\">);  <\/span><span style=\"color: #88846F\">\/\/ Email draft subject<\/span><\/span>\n<span class=\"line\"><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\"> (<\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">draftId) {<\/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: Draft not found.&quot;<\/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\">;  <\/span><span style=\"color: #88846F\">\/\/ Exit if the draft is not found<\/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><code>getDraftIdBySubject('\u6253\u5408\u305b\u65e5\u7a0b\u306b\u3064\u3044\u3066')<\/code>: Search for the draft with the subject &#8220;Regarding Meeting Schedule&#8221; in Gmail and retrieve its ID.<\/li>\n\n\n\n<li>If the draft is not found, log an error message and terminate the process.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Send Emails for Each Data Entry<\/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=\"  data.forEach(function(row, index) {\n    var sentTime = row[6];  \/\/ Column G: Sent Time\n    if (row[5] === 'TRUE' &amp;&amp; !sentTime) {  \/\/ Check if the checkbox in column F is checked\" 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: #F8F8F2\">  data.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #66D9EF; font-style: italic\">function<\/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>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> sentTime <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> row[<\/span><span style=\"color: #AE81FF\">6<\/span><span style=\"color: #F8F8F2\">];  <\/span><span style=\"color: #88846F\">\/\/ Column G: Sent Time<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (row[<\/span><span style=\"color: #AE81FF\">5<\/span><span style=\"color: #F8F8F2\">] <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;TRUE&#39;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">&amp;&amp;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">sentTime) {  <\/span><span style=\"color: #88846F\">\/\/ Check if the checkbox in column F is checked<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Check the sent time in column G. Since the sent time is recorded for sent rows, verify it accordingly.<\/li>\n\n\n\n<li><code>row[5] === 'TRUE'<\/code>: Check if the checkbox in column F is &#8220;TRUE&#8221; (checked) to determine whether the email should be sent to that recipient.<\/li>\n\n\n\n<li>The subsequent email sending process will be executed for rows that meet these conditions.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Preparing to Send Emails<\/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=\"      var recipient = row[2];  \/\/ Column C: Email Address\n      var subject = 'Regarding Meeting Schedule';  \/\/ Subject of the email to be sent\n      var body = getDraftMessageBody(draftId);  \/\/ Get the draft message body\n      var attachments = getDraftAttachments(draftId);  \/\/ Get the draft attachments\" 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: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> recipient <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> row[<\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">];  <\/span><span style=\"color: #88846F\">\/\/ Column C: Email Address<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> subject <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Regarding Meeting Schedule&#39;<\/span><span style=\"color: #F8F8F2\">;  <\/span><span style=\"color: #88846F\">\/\/ Subject of the email to be sent<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> body <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftMessageBody<\/span><span style=\"color: #F8F8F2\">(draftId);  <\/span><span style=\"color: #88846F\">\/\/ Get the draft message body<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> attachments <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftAttachments<\/span><span style=\"color: #F8F8F2\">(draftId);  <\/span><span style=\"color: #88846F\">\/\/ Get the draft attachments<\/span><\/span><\/code><\/pre><\/div>\n<\/dd>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<ul class=\"wp-block-list\">\n<li><code>row[2]<\/code>: Retrieve the email address from column C to specify the recipient.<\/li>\n\n\n\n<li><code>getDraftMessageBody(draftId)<\/code>,<code>getDraftAttachments(draftId)<\/code>: Retrieve the body and attachments of the previously obtained draft email.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Customization<\/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=\"      \/\/ Replace placeholders with data from the spreadsheet\n      body = body.replace(\/{First Name}\/g, row[0])       \/\/ Column A: First Name\n                 .replace(\/{Meeting Date}\/g, row[3])     \/\/ Column D: Meeting Date\n                 .replace(\/{Meeting Time}\/g, row[4]);    \/\/ Column E: Meeting Time\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: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Replace placeholders with data from the spreadsheet<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      body <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> body.<\/span><span style=\"color: #A6E22E\">replace<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">\/{First Name}\/<\/span><span style=\"color: #F92672\">g<\/span><span style=\"color: #F8F8F2\">, row[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">])       <\/span><span style=\"color: #88846F\">\/\/ Column A: First Name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">                 .<\/span><span style=\"color: #A6E22E\">replace<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">\/{Meeting Date}\/<\/span><span style=\"color: #F92672\">g<\/span><span style=\"color: #F8F8F2\">, row[<\/span><span style=\"color: #AE81FF\">3<\/span><span style=\"color: #F8F8F2\">])     <\/span><span style=\"color: #88846F\">\/\/ Column D: Meeting Date<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">                 .<\/span><span style=\"color: #A6E22E\">replace<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">\/{Meeting Time}\/<\/span><span style=\"color: #F92672\">g<\/span><span style=\"color: #F8F8F2\">, row[<\/span><span style=\"color: #AE81FF\">4<\/span><span style=\"color: #F8F8F2\">]);    <\/span><span style=\"color: #88846F\">\/\/ Column E: Meeting Time<\/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><code>body.replace()<\/code>:Based on the spreadsheet data, replace the placeholders in the draft email (<code>{First Name}<\/code>, <code>{Meeting Date}<\/code>, <code>{Meeting Time<\/code>) with the actual data.<\/li>\n\n\n\n<li><code>row[0]<\/code>: Use column A (First Name),<code>row[3]<\/code>: column D (Meeting Date), and<code>row[4]<\/code>: column E (Meeting Time) to dynamically customize each individual email content.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Sending Email<\/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=\"      \/\/ Send email using GmailApp.sendEmail (with HTML body)\n      GmailApp.sendEmail(recipient, subject, '', {\n        htmlBody: body,\n        attachments: attachments  \/\/ Add attachments to the email\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: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Send email using GmailApp.sendEmail (with HTML body)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      GmailApp.<\/span><span style=\"color: #A6E22E\">sendEmail<\/span><span style=\"color: #F8F8F2\">(recipient, subject, <\/span><span style=\"color: #E6DB74\">&#39;&#39;<\/span><span style=\"color: #F8F8F2\">, {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        htmlBody: body,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        attachments: attachments  <\/span><span style=\"color: #88846F\">\/\/ Add attachments to the email<\/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><code>GmailApp.sendEmail()<\/code>: Send the email to the specified recipient using the retrieved body and attachments.<\/li>\n\n\n\n<li>Using `<code>htmlBody<\/code>` allows sending the email in HTML format.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Recording the Sent Time<\/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=\"      \/\/ Record the sent time in Column G\n      var userTimezone = Session.getScriptTimeZone();  \/\/ Get the user's script timezone\n      var localTime = Utilities.formatDate(new Date(), userTimezone, 'MM\/dd\/yyyy HH:mm:ss');\n      sheet.getRange(index + 2, 7).setValue(localTime);  \/\/ Record the sent time in Column G\" 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: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Record the sent time in Column G<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> userTimezone <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> Session.<\/span><span style=\"color: #A6E22E\">getScriptTimeZone<\/span><span style=\"color: #F8F8F2\">();  <\/span><span style=\"color: #88846F\">\/\/ Get the user&#39;s script timezone<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> localTime <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> Utilities.<\/span><span style=\"color: #A6E22E\">formatDate<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #F92672\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">Date<\/span><span style=\"color: #F8F8F2\">(), userTimezone, <\/span><span style=\"color: #E6DB74\">&#39;MM\/dd\/yyyy HH:mm:ss&#39;<\/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\">(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: #AE81FF\">7<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(localTime);  <\/span><span style=\"color: #88846F\">\/\/ Record the sent time in Column G<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Utilities.formatDate()<\/code>: Get the current date and time.<\/li>\n\n\n\n<li><code>sheet.getRange(index + 2, 7).setValue(localTime)<\/code>:Record the sent time in column G of the row where the email was sent. This helps prevent duplicate sending.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Helper Functions\uff1a<strong><code>getDraftAttachments(draftId)<\/code><\/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 get draft attachments\nfunction getDraftAttachments(draftId) {\n  var draft = GmailApp.getDraft(draftId);\n  var message = draft.getMessage();\n  return message.getAttachments();  \/\/ Get attachments\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 get draft attachments<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftAttachments<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">draftId<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> draft <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> GmailApp.<\/span><span style=\"color: #A6E22E\">getDraft<\/span><span style=\"color: #F8F8F2\">(draftId);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> message <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> draft.<\/span><span style=\"color: #A6E22E\">getMessage<\/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\"> message.<\/span><span style=\"color: #A6E22E\">getAttachments<\/span><span style=\"color: #F8F8F2\">();  <\/span><span style=\"color: #88846F\">\/\/ Get attachments<\/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>Retrieve the attachments based on the specified draft email ID.<\/li>\n\n\n\n<li>Use `<code>GmailApp.getDraft()<\/code>` to obtain the draft email and then retrieve the attachments from its message.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Helper Functions\uff1a<strong><code>getDraftIdBySubject(subject)<\/code><\/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 get draft ID by specified subject\nfunction getDraftIdBySubject(subject) {\n  var drafts = GmailApp.getDrafts();\n  for (var i = 0; i &lt; drafts.length; i++) {\n    if (drafts[i].getMessage().getSubject() === subject) {\n      return drafts[i].getId();\n    }\n  }\n  Logger.log(&quot;Error: No draft found with subject '&quot; + subject + &quot;'.&quot;);\n  return null;  \/\/ Return null if no draft is found\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 get draft ID by specified subject<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftIdBySubject<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">subject<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> drafts <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> GmailApp.<\/span><span style=\"color: #A6E22E\">getDrafts<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">for<\/span><span style=\"color: #F8F8F2\"> (<\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> i <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">; i <\/span><span style=\"color: #F92672\">&lt;<\/span><span style=\"color: #F8F8F2\"> drafts.length; i<\/span><span style=\"color: #F92672\">++<\/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\"> (drafts[i].<\/span><span style=\"color: #A6E22E\">getMessage<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getSubject<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> subject) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> drafts[i].<\/span><span style=\"color: #A6E22E\">getId<\/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 style=\"color: #F8F8F2\">  Logger.<\/span><span style=\"color: #A6E22E\">log<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&quot;Error: No draft found with subject &#39;&quot;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> subject <\/span><span style=\"color: #F92672\">+<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&quot;&#39;.&quot;<\/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\"> <\/span><span style=\"color: #AE81FF\">null<\/span><span style=\"color: #F8F8F2\">;  <\/span><span style=\"color: #88846F\">\/\/ Return null if no draft is found<\/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>Search through all drafts saved in Gmail to find the email with the specified subject and retrieve its ID. If it&#8217;s not found, return null.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Helper Functions\uff1a<strong><code>getDraftMessageBody(draftId)<\/code><\/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 get the draft message body\nfunction getDraftMessageBody(draftId) {\n  var draft = GmailApp.getDraft(draftId);\n  var message = draft.getMessage();\n  return message.getBody();  \/\/ Get the draft HTML body\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 get the draft message body<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getDraftMessageBody<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">draftId<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> draft <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> GmailApp.<\/span><span style=\"color: #A6E22E\">getDraft<\/span><span style=\"color: #F8F8F2\">(draftId);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">var<\/span><span style=\"color: #F8F8F2\"> message <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> draft.<\/span><span style=\"color: #A6E22E\">getMessage<\/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\"> message.<\/span><span style=\"color: #A6E22E\">getBody<\/span><span style=\"color: #F8F8F2\">();  <\/span><span style=\"color: #88846F\">\/\/ Get the draft HTML body<\/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>Retrieve the body (in HTML format) from the draft email corresponding to the specified ID.<\/li>\n<\/ul>\n<\/dd>\n<\/dl>\n<\/div><\/details>\n<\/div>\n\n\n\n<p>his script automatically sends emails from Gmail based on the email addresses and meeting schedules listed in a spreadsheet. <\/p>\n\n\n\n<p>The email body is created by customizing a pre-prepared draft email template. <\/p>\n\n\n\n<p>Emails are sent individually based on the information in the spreadsheet, and the date and time of sending are also recorded. <\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-50\">Recording the sent time helps prevent duplicate emails from being sent.<\/p>\n\n\n\n<p><strong><span class=\"swl-fz u-fz-l\">Steps<\/span><\/strong><\/p>\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\">Open the Apps Script Editor<\/div><div class=\"swell-block-step__body\"><div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-full is-resized\"><img decoding=\"async\" width=\"828\" height=\"638\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/49eb48b95d4c4504148a0386b7cb3e2b.jpg\" alt=\"\" class=\"wp-image-15967\" style=\"width:483px;height:auto\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/49eb48b95d4c4504148a0386b7cb3e2b.jpg 828w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/49eb48b95d4c4504148a0386b7cb3e2b-300x231.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/49eb48b95d4c4504148a0386b7cb3e2b-768x592.jpg 768w\" sizes=\"(max-width: 828px) 100vw, 828px\" \/><\/figure>\n<\/div>\n\n\n<p>Open Google Sheets, then click on \u201c<strong>Extensions<\/strong>\u201d in the menu and select \u201c<strong>Apps Script<\/strong>\u201d to open the editor.<\/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\">Create the Script<\/div><div class=\"swell-block-step__body\">\n<p class=\"u-mb-ctrl u-mb-40\">Copy the code above and paste it into the editor.<\/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\">Save the Script<\/div><div class=\"swell-block-step__body\">\n<figure class=\"wp-block-image size-full u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1616\" height=\"619\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/fcc15e9d6eddeb07556dd9b1a6736524.jpg\" alt=\"\" class=\"wp-image-15968\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/fcc15e9d6eddeb07556dd9b1a6736524.jpg 1616w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/fcc15e9d6eddeb07556dd9b1a6736524-300x115.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/fcc15e9d6eddeb07556dd9b1a6736524-1024x392.jpg 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/fcc15e9d6eddeb07556dd9b1a6736524-768x294.jpg 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/fcc15e9d6eddeb07556dd9b1a6736524-1536x588.jpg 1536w\" sizes=\"(max-width: 1616px) 100vw, 1616px\" \/><\/figure>\n\n\n\n<p>Once you&#8217;ve written the code, name it and save it.<\/p>\n\n\n\n<p>(For example: &#8220;Send Email&#8221;)<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Create email draft<\/h2>\n\n\n<div class=\"wp-block-image u-mb-ctrl u-mb-30\">\n<figure class=\"alignleft size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"676\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-81-1024x676.png\" alt=\"\" class=\"wp-image-15970\" style=\"width:641px;height:auto\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-81-1024x676.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-81-300x198.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-81-768x507.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-81.png 1111w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Next, open Gmail and create a draft email template.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">In the draft email, use placeholders { } like below, so that data from the spreadsheet can be inserted.<\/p>\n\n\n\n<p><strong>Example draft<\/strong><\/p>\n\n\n\n<p>Subject: Regarding Meeting Schedule<\/p>\n\n\n\n<pre class=\"wp-block-code u-mb-ctrl u-mb-50 has-swl-pale-04-background-color has-background\"><code>Dear <strong><span class=\"swl-marker mark_blue\">{First Name}<\/span><\/strong>,\n\nWe are pleased to inform you of the scheduled meeting details as follows:\n\n- Meeting Date: <strong><span class=\"swl-marker mark_blue\">{Meeting Date}<\/span><\/strong>\n- Time: <strong><span class=\"swl-marker mark_blue\">{Meeting Time}<\/span><\/strong>\n\nThank you and best regards.\n<\/code><\/pre>\n\n\n\n<p class=\"u-mb-ctrl u-mb-60\">By including placeholders like <code>{<strong>First Name<\/strong>}<\/code> and <code><strong>Meeting Date<\/strong><\/code> in the email body, data from the spreadsheet will be automatically inserted.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Run the script to send emails<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"392\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1-1024x392.jpg\" alt=\"\" class=\"wp-image-15971\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1-1024x392.jpg 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1-300x115.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1-768x294.jpg 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1-1536x588.jpg 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1.jpg 1616w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">Once all settings are complete, run the script from the Apps Script editor screen.<\/p>\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\">Open the Apps Script Editor<\/div><div class=\"swell-block-step__body\"><div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-full is-resized\"><img decoding=\"async\" width=\"828\" height=\"638\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/49eb48b95d4c4504148a0386b7cb3e2b.jpg\" alt=\"\" class=\"wp-image-15967\" style=\"width:483px\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/49eb48b95d4c4504148a0386b7cb3e2b.jpg 828w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/49eb48b95d4c4504148a0386b7cb3e2b-300x231.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/49eb48b95d4c4504148a0386b7cb3e2b-768x592.jpg 768w\" sizes=\"(max-width: 828px) 100vw, 828px\" \/><\/figure>\n<\/div>\n\n\n<p>Open Google Sheets, then click on \u201c<strong>Extensions<\/strong>\u201d in the menu and select \u201c<strong>Apps Script<\/strong>\u201d to open the editor.<\/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-full\"><img decoding=\"async\" width=\"1616\" height=\"619\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1.jpg\" alt=\"\" class=\"wp-image-15971\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1.jpg 1616w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1-300x115.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1-1024x392.jpg 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1-768x294.jpg 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e76434b51bc28d25d0e4eae3fcb4cab1-1536x588.jpg 1536w\" sizes=\"(max-width: 1616px) 100vw, 1616px\" \/><\/figure>\n<\/div>\n\n\n<p>Execute the script to send the emails.<\/p>\n<\/div><\/div>\n<\/div>\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\n\n\n<p>This will automatically send emails to the people checked in the spreadsheet and record the sent date and time.<\/p>\n\n\n\n<p><strong>Recording sent date and time in the google sheet<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"243\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-84-1024x243.png\" alt=\"\" class=\"wp-image-15979\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-84-1024x243.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-84-300x71.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-84-768x182.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-84-1536x365.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-84-2048x486.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">Additionally, creating a button on the spreadsheet allows you to run the script more easily.<\/p>\n\n\n\n<p><strong>Gmail sending content<\/strong><\/p>\n\n\n<div class=\"wp-block-image u-mb-ctrl u-mb-60\">\n<figure class=\"alignleft size-full\"><img decoding=\"async\" width=\"472\" height=\"376\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/10\/c0c2fa8a3bea94c3556434fa4ee3f2ac.png\" alt=\"\" class=\"wp-image-14877\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/10\/c0c2fa8a3bea94c3556434fa4ee3f2ac.png 472w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/10\/c0c2fa8a3bea94c3556434fa4ee3f2ac-300x239.png 300w\" sizes=\"(max-width: 472px) 100vw, 472px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading u-mb-ctrl u-mb-40\">Summary<\/h2>\n\n\n\n<p>With this, the basic email sending automation using Google Sheets and Google Apps Script is complete. <\/p>\n\n\n\n<p>Once set up, you can efficiently automate what used to be a labor-intensive email sending task. <\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-30\">Utilize this method whenever you need to change only parts of the email to send to different recipients.<\/p>\n\n\n<div class=\"p-postListWrap\"><ul class=\"p-postList -type-card -pc-col3 -sp-col1\"><li class=\"p-postList__item\">\n\t<a href=\"https:\/\/84office.jp\/en\/google-news-template\/\" 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\/07\/c2fc7fedc4f307708a0b5f65f7039b96-1024x538.jpg\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/c2fc7fedc4f307708a0b5f65f7039b96-1024x538.jpg 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/c2fc7fedc4f307708a0b5f65f7039b96-300x158.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/c2fc7fedc4f307708a0b5f65f7039b96-768x403.jpg 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/c2fc7fedc4f307708a0b5f65f7039b96.jpg 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 News Fetch Template: Streamline Information Gathering with Google Apps Script and Google Sheets<\/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-07-19\" aria-label=\"\u516c\u958b\u65e5\">2025\u5e747\u670819\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\/run-google-maps-api-geocoding\/\" 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\/513f3a0811e53a7de868b7f72fa4eb1d-1-1024x538.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/513f3a0811e53a7de868b7f72fa4eb1d-1-1024x538.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/513f3a0811e53a7de868b7f72fa4eb1d-1-300x158.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/513f3a0811e53a7de868b7f72fa4eb1d-1-768x403.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/513f3a0811e53a7de868b7f72fa4eb1d-1.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\">How to Automatically Convert Addresses to Latitude and Longitude in Google Sheets Using Google Maps 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=\"2025-01-20\" aria-label=\"\u516c\u958b\u65e5\">2025\u5e741\u670820\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\/calendar-schedule-get\/\" 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\/07\/681ab5717fcc05ebbd5941615d6f2bc4-1024x538.jpg\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/681ab5717fcc05ebbd5941615d6f2bc4-1024x538.jpg 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/681ab5717fcc05ebbd5941615d6f2bc4-300x158.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/681ab5717fcc05ebbd5941615d6f2bc4-768x403.jpg 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/681ab5717fcc05ebbd5941615d6f2bc4.jpg 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\">Export Google Calendar Events to a Spreadsheet\uff5cEasily Get Schedules for Multiple Users with Google Apps Script<\/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-07-22\" aria-label=\"\u516c\u958b\u65e5\">2025\u5e747\u670822\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\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>When sending emails to customers or contacts managed in a spreadsheet, do you find yourself sending similar co [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":15981,"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=14865","footnotes":""},"categories":[12],"tags":[],"class_list":["post-15962","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\/15962","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=15962"}],"version-history":[{"count":7,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts\/15962\/revisions"}],"predecessor-version":[{"id":16182,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts\/15962\/revisions\/16182"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/media\/15981"}],"wp:attachment":[{"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/media?parent=15962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/categories?post=15962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/tags?post=15962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}