首页 > 解决方案 > 有没有办法在 Google App Scripts 中调用 getAlias 名称?

问题描述

问题是 - 电子邮件是从别名 [cs@example.com] 发送的,收件箱中显示的名称是 cs(用户),而不是实际名称 - 示例支持。

一个可能的解决方案当然是使用 options GmailApp.sendEmail(recipient, subject, body, {from: alias[0], name: 'Example Support'}),但是,是否有一个 get 选项将其保留为变量 - 比如getName

这是当前代码的精简版本,它可以工作,但并不理想(‍♀️):

function myFunction() {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastrow = sheet.getLastRow();
  var sent = 'SENT';

  for (var i = 2;i<=lastrow;i++){

    var email = sheet.getRange(i, 2).getValue();
    var subject = sheet.getRange(i, 3).getValue();
    var body = sheet.getRange(i, 4).getValue();
    var status = sheet.getRange(i, 5).getValue();

    var alias = GmailApp.getAliases();
    var support = alias[0];
    var accounting = alias[1];
    var name1 = 'Example Support';
    var name2 = 'Example Accounting';

    if (status == 'support') {
      GmailApp.sendEmail(email, subject, body, {from: support, name: name1});
      sheet.getRange(i, 7).setValue(sent); 
      SpreadsheetApp.flush
      } else if (status == 'accounting') {
        GmailApp.sendEmail(email, subject, body, {from: accounting, name: name2});
        sheet.getRange(i, 7).setValue(sent); 
        SpreadsheetApp.flush
        }
   }
}

你知道一种可能性吗?感谢您的帮助!

标签: google-apps-scriptgoogle-sheets

解决方案


这只能通过 Gmail 高级 Google 服务实现。

重要的!首先在资源 > 高级 Google 服务中启用 Gmail 。然后按照说明在脚本的 GCP 项目中启用 API。

以您的代码为例:

...
var support = alias[0]
...
if (status == 'support') {
  var aliasName = Gmail.Users.Settings.SendAs.get(me, support).displayName
  GmailApp.sendEmail(email, subject, body, {from: support, name: aliasName});
  sheet.getRange(i, 7).setValue(sent); 
  SpreadsheetApp.flush
}

类似地调整你的其他 if 语句。


推荐阅读