簡體   English   中英

有沒有辦法將郵件與我自己的域名合並,而不是 Gmail

[英]Is there any way to mail merge with my own domain name instead Gmail

這里我想做的是:

  1. 通過在 App Script 中編寫腳本,通過郵件合並發送 email。 (成功)
  2. 我在我的 Gmail 中配置了 2 個域 email 地址以及我的基本 Gmail 地址。 我想通過 xyz@domainname.com 而不是谷歌表格所有者 xyz@gmail.com 發送 email。 這是我通過 Gmail 發送 email 所做的事情
  var first = 0;
  var last = 1;
  var email = 2;
  
  var emailTemp = HtmlService.createTemplateFromFile("email");

  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NAJ");

  var data = ws.getRange("A2:C" + ws.getLastRow()).getValues();

  data.forEach(function(row){
    
    emailTemp.fn = row[first];
    emailTemp.ln = row[last];
    var htmlMessage = emailTemp.evaluate().getContent();
    GmailApp.sendEmail(row[email], "Important Test", "Your email does not support HTML.",
    {name: "Email App", htmlBody: htmlMessage}
    );

  });

}

我唯一需要做的就是更改發送 email 地址。 任何幫助將不勝感激。 原諒我的英語不好

這是我的數據庫

解釋:

您的目標是從特定的 email 帳戶發送電子郵件,而不考慮當前正在執行腳本的 email 帳戶。

方法一:

  • 一種解決方法是使用可安裝的觸發器。 根據文檔:

可安裝觸發器始終在創建它們的人的帳戶下運行。 例如,如果您創建一個可安裝的打開觸發器,它會在您的同事打開文檔時運行(如果您的同事具有編輯權限),但它會作為您的帳戶運行。 這意味着,如果您創建觸發器以在打開文檔時發送 email,則始終從您的帳戶發送 email,而不必是打開文檔的帳戶。

這里的想法是從xyz@domainname.com創建一個可安裝的onEdit觸發器,這樣每當其他電子郵件編輯特定單元格時,就會發送電子郵件。

這種方法的局限性在於,我們需要確保在真正需要時觸發代碼,而不是在每次編輯單元格時觸發。 我們可以創建一個復選框,然后單擊復選框(無論哪個帳戶執行此操作),然后腳本將被執行,電子郵件將由創建可安裝觸發器的 email 帳戶發送。

方法二:

創建 email 別名。 是有關如何執行此操作的官方文檔,並且此線程可能對以編程方式創建它們很有用。 此處的限制是,要添加 email 別名,您必須是 Google Workspace 管理員。

解決方案:

解決方案1:

  1. 在工作表NAJ的單元格D1中創建一個復選框。 單元格由您決定,但您需要相應地調整腳本。

  2. 更改 function 的名稱以添加事件 object 這將允許我們獲取編輯信息,例如編輯了哪個單元格。

新的 function 將是:

function myInstallableOnEditFunction(e) {
  
  const arng = e.range;
  
  if(arng.getSheet().getName()=="NAJ" && arng.getA1Notation()=='D1' && arng.getValue()==true){
  
    var first = 0;
    var last = 1;
    var email = 2;
    
    var emailTemp = HtmlService.createTemplateFromFile("email");
    
    var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NAJ");
    
    var data = ws.getRange("A2:C" + ws.getLastRow()).getValues();
    
    data.forEach(function(row){
      
      emailTemp.fn = row[first];
      emailTemp.ln = row[last];
      var htmlMessage = emailTemp.evaluate().getContent();
      GmailApp.sendEmail(row[email], "Important Test", "Your email does not support HTML.",
                         {name: "Email App", htmlBody: htmlMessage}
                        );
      
    });
  }
}

最后,從xyz@domainname.com帳戶創建一個可安裝的onEdit觸發器 function。 您可以從當前項目的觸發菜單中手動執行此操作,也可以通過編程方式執行此操作。

之后,在任何帳戶單擊單元格D1后,電子郵件將通過xyz@domainname.com發送。

解決方案2:

創建 email 別名后(參見方法 2 ),您可以使用getAliases()方法,這是一個示例腳本。 我沒有自己測試過,但你也可以探索這種可能性。

// Log the aliases for this Gmail account and send an email as the first one.
var me = Session.getActiveUser().getEmail();
var aliases = GmailApp.getAliases();
Logger.log(aliases);
if (aliases.length > 0) {
  GmailApp.sendEmail(me, 'From an alias', 'A message from an alias!', {'from': aliases[0]});
} else {
  GmailApp.sendEmail(me, 'No aliases found', 'You have no aliases.');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM