有时您想向许多人发送内容几乎相同的电子邮件。

在这种情况下,您可以使用密件抄送将同一封电子邮件发送给许多人,但这种方法会导致以下问题。

  1. 我想在邮件正文中包含收件人姓名,但内容相同。
  2. 如果你放了很多密件抄送,很容易被判断为垃圾邮件,你将无法阅读邮件。
  3. 抄送发送不正确

    因此,我使用 Google Sheets、GAS 和 Google Docs 制作了一个 Gmail 批量发送工具。

    警告
    请务必在使用之前将其测试到您自己的电子邮件地址。

    散装表

    创建一张像下面这样的工作表。
    GASとスプレッドシートで作るGmail一括送信ツール

    在 A 到 D 列中指定电子邮件文本的组成
    在 E 列中指定目标电子邮件地址
    用 F2 指定邮件标题
    在 G2 上指定电子邮件发件人
    H2 指定包含电子邮件文本的文档的 URL。

    对于批量发送按钮,选择“插入”⇨“绘图”并从形状中选择一个名为“斜角”的按钮状形状。

    GASとスプレッドシートで作るGmail一括送信ツール

    在文本框中将其命名为批量发送并将其放在工作表中的正确位置。

    将测试句子和您的电子邮件地址添加到工作表的 A-H 列以进行测试。

    电子邮件正文文件

    在与工作表相同的文件夹中创建一个 Google 文档并粘贴以下文本。 (发送时请更改内容。)

    电子邮件文本示例
    {A}様 
    
    
    お世話になっております。 
    
    
    旬の果物屋{B}ショップです。 
    数ある店舗の中から当店をお選びいただき、誠にありがとうございます。 
    
    
    
    ご注文いただきました{C}については現在配送のため収穫中でございます。 
    
    {D}はこの時期、大変美味しく熟しております。 
    
    
    ご注文いただきました商品を無事にお届けできるよう細心の注意を払ってまいります。 
    
    商品到着まで、どうぞよろしくお願いいたします。
    

    将创建的文档的 URL 粘贴到上一张表的 H2(正文文档)中。

    脚本

    打开工作表,从扩展程序中选择 Apps 脚本并粘贴以下脚本。

    function sendEmails() {
    
        var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
        var rowSheet = mySheet.getDataRange().getLastRow(); //シートの使用範囲の最終行を取得
    
        var docURL = mySheet.getRange("H2").getValue();//メール本文ドキュメントのURLを取得
        var docID = docURL.slice(35,-5);//URLからIDのみを抽出
        var docOpen = DocumentApp.openById(docID); //ドキュメントをIDで取得
        var strDoc = docOpen.getBody().getText(); //ドキュメント内容取得
    
        var strTitle = mySheet.getRange("F2").getValue(); //メールタイトル
        var strMe = mySheet.getRange("G2").getValue(); //差出人
    
        var strSubject = strTitle; //表題
        var strFrom = '送信元の自分のメールアドレスを入れる'; //From
        var strSender = strMe; //差出人
    
        /* ドキュメントの内容とメールアドレスの取得*/
        for (var i = 2; i <= rowSheet; i++) {
            var strBody_A = mySheet.getRange(i, 1).getValue(); //メール文変数A
            var strBody_B = mySheet.getRange(i, 2).getValue(); //メール文変数B
            var strBody_C = mySheet.getRange(i, 3).getValue(); //メール文変数C
            var strBody_D = mySheet.getRange(i, 4).getValue(); //メール文変数D
            var strEmail = mySheet.getRange(i, 5).getValue(); //email
    
            var strBody = strDoc.replace(/{A}/,strBody_A).replace(/{B}/,strBody_B).replace(/{C}/,strBody_C).replace(/{D}/,strBody_D); //ドキュメントの文章を置き換え
    
            /* メールを送信 */
            GmailApp.sendEmail(
                strEmail, //toアドレス
                strSubject,  //メールタイトル
                strBody, //本文
                {
                    from: strFrom, //fromアドレス
                    name: strSender //差出人
                }
            );
    
        }
        var strResult = Browser.msgBox(rowSheet - 1 + "件のメールを送信しました。", Browser.Buttons.OK);
    }
    
    保存脚本并测试运行

    按保存项目按钮。

    检查表格并确保其发送至您的测试电子邮件地址。

    按下执行按钮时,会显示承認が必要です,请参考以下文章进行批准。

    如果电子邮件到达您的电子邮件地址,您就可以开始了。检查是否有句子等奇怪的地方,并调整表格或文档。

    将脚本分配给按钮

    打开工作表,右键单击按钮,单击右上角的点,然后选择分配脚本。
    GASとスプレッドシートで作るGmail一括送信ツール
    键入 sendEmails 并按确认。

    按下按钮运行脚本,当您收到电子邮件时,该工具就完成了。

    剧本评论

    该脚本可以连续执行获取工作表和文档、组合文档和工作表的内容、创建和发送电子邮件的过程。

    获取工作表并获取文档内容
        var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
        var rowSheet = mySheet.getDataRange().getLastRow(); //シートの使用範囲の最終行を取得
    
        var docURL = mySheet.getRange("H2").getValue();//メール本文ドキュメントのURLを取得
        var docID = docURL.slice(35,-5);//URLからIDのみを抽出
        var docOpen = DocumentApp.openById(docID); //ドキュメントをIDで取得
        var strDoc = docOpen.getBody().getText(); //ドキュメント内容取得
    

    电子邮件正文文档 ID 是文档 URL 中 /d//edit 之间的 44 个字符的字符串。
    https://docs.google.com/document/d/aaahllihalhlkajkeujjjjaiaiue00000klahlybaaad/edit
    可以通过直接在脚本中输入ID来指定ID,但是为了使工具更容易被许多人使用,使用了切片功能,因此可以通过在表单中​​指定URL来仅提取ID所以可以提取ID。做到了。

    指定电子邮件标题、发件人和发件人
        var strTitle = mySheet.getRange("F2").getValue(); //メールタイトル
        var strMe = mySheet.getRange("G2").getValue(); //差出人
    
        var strSubject = strTitle; //表題
        var strFrom = '送信元の自分のメールアドレスを入れる'; //From
        var strSender = strMe; //差出人
    

    在工作表上指定邮件标题和发件人。
    由于 F2 和 G2 被读取,写入 F3 或 G3 将不会读取它们。
    似乎需要根据内容更改电子邮件标题,所以我想有一天创建一个。

    根据工作表中指定的内容,重复指定的行数
    创建和发送电子邮件文本的脚本
     /* ドキュメントの内容とメールアドレスの取得*/
        for (var i = 2; i <= rowSheet; i++) {
            var strBody_A = mySheet.getRange(i, 1).getValue(); //メール文変数A
            var strBody_B = mySheet.getRange(i, 2).getValue(); //メール文変数B
            var strBody_C = mySheet.getRange(i, 3).getValue(); //メール文変数C
            var strBody_D = mySheet.getRange(i, 4).getValue(); //メール文変数D
            var strEmail = mySheet.getRange(i, 5).getValue(); //email
    
            var strBody = strDoc.replace(/{A}/,strBody_A).replace(/{B}/,strBody_B).replace(/{C}/,strBody_C).replace(/{D}/,strBody_D); //ドキュメントの文章を置き換え
    
            /* メールを送信 */
            GmailApp.sendEmail(
                strEmail, //toアドレス
                strSubject,  //メールタイトル
                strBody, //本文
                {
                    from: strFrom, //fromアドレス
                    name: strSender //差出人
                }
            );
    
        }
    

    由于篇幅较长,我单独说明。

    重复处理直到最后一行输入到工作表中
        for (var i = 2; i <= rowSheet; i++) {
    

    由于工作表的最后一行是使用 rowSheet 函数获得的,因此该过程会执行该次数。
    如果出现错误,如果有一个单元格在第 3 行或之后的值,则会发生错误,因此如果出现错误,请从第 3 行开始选择所有列,然后按 BackSpace 将其清除。

    阅读工作表中描述的电子邮件句子的组成句子并替换文档中的句子
     var strBody_A = mySheet.getRange(i, 1).getValue(); //メール文変数A
            var strBody_B = mySheet.getRange(i, 2).getValue(); //メール文変数B
            var strBody_C = mySheet.getRange(i, 3).getValue(); //メール文変数C
            var strBody_D = mySheet.getRange(i, 4).getValue(); //メール文変数D
            var strEmail = mySheet.getRange(i, 5).getValue(); //email
    
            var strBody = strDoc.replace(/{A}/,strBody_A).replace(/{B}/,strBody_B).replace(/{C}/,strBody_C).replace(/{D}/,strBody_D); //ドキュメントの文章を置き換え
    

    在这里,我们将文档中描述的{A}等变量替换为工作表上的文字。
    需要注意的是,如果先将 {A} 替换为名称,并且您想在句子中再次使用它,即使您写了两次 {A},第二个 {A} 也将无效。
    例子

    电子邮件正文文件

    {A}様 
    お世話になっております。 
    {A}様はいつも{B}ショップをご贔屓いただき誠にありがとうございます。
    

    床单

    一个 B.
    田中太郎 苹果

    ↓ 我想在替换过程中这样做

    田中太郎様 
    お世話になっております。 
    田中太郎様はいつもりんごショップをご贔屓いただき誠にありがとうございます。
    

    ↓其实会是这样的

    田中太郎様 
    お世話になっております。 
    {A}様はいつもりんごショップをご贔屓いただき誠にありがとうございます。
    

    所以如果你想第二次替换同一个句子,你需要写成如下。

    {A}様 
    お世話になっております。 
    {B}様はいつも{C}ショップをご贔屓いただき誠にありがとうございます。
    

    床单

    一个 B. C。
    田中太郎 田中太郎 苹果

    ↓成功

    田中太郎様 
    お世話になっております。 
    田中太郎様はいつもりんごショップをご贔屓いただき誠にありがとうございます。
    

    发送电子邮件

    
            /* メールを送信 */
            GmailApp.sendEmail(
                strEmail, //toアドレス
                strSubject,  //メールタイトル
                strBody, //本文
                {
                    from: strFrom, //fromアドレス
                    name: strSender //差出人
                }
            );
    
    

    我正在使用 GmailApp 方法的 sendEmail 功能发送电子邮件。
    讲话
    电子邮件标题
    文本
    发件人地址
    指定发件人,发送它,然后继续处理工作表上的下一行。

    将显示一个弹出窗口并完成批处理。

    var strResult = Browser.msgBox(rowSheet - 1 + "件のメールを送信しました。", Browser.Buttons.OK);
    

    它会显示您发送了多少封电子邮件。
    GASとスプレッドシートで作るGmail一括送信ツール

    参考


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308626887.html

相关文章: