如何在从应用程序脚本发送的电子邮件中显示我的姓名作为发件人?

How do I get to show my name as sender in the emails send from app script?

我的代码现在看起来像这样:

GmailApp.sendEmail(address, subject, body, {htmlBody : body});

我的参考问题: Syntax Error for adding signature to email created from sheets using apps script for

我的问题: 它显示发件人为 alex.ken@....

我想要什么:我希望脚本采用用户的名字。所有用户都在 Google 设置中为其电子邮件地址设置了不同的名称。

PS - 请注意我有多个用户使用 sheet/macro 所以我不能在名称参数中有固定值。

请大家帮忙

编辑 1=解决方案:

var user = Session.getActiveUser().getUsername(); //gives username
var firstpart = user.split('.')[0]; //gives first part of username
var uppercase = firstpart.charAt(0).toUpperCase() + firstpart.substring(1); //makes first letter upper case
var display = uppercase + " with Ban Company";
.
.
.
.
GmailApp.sendEmail(address, subject, body, {htmlBody : body + signature,cc: "test@gmail.com",name:display});

使用

const name = 'Alex from Ban' // replace the string by someway to assign the value that you want to use. 
GmailApp.sendEmail(address, subject, body, {htmlBody : body, name: name });

参考资料

您的解决方案适用于 name.surname@... 格式的电子邮件,但如果用户有其他内容,例如 itadmin@...、昵称或任何其他电子邮件变体,您可以 运行问题。

另一种解决方案是使用 People API Advanced Services to retrieve the current user's Profile name, since Apps Script's Session.getActiveUser() only includes the user's email and there are some scenarios where it won't work.

这包括更多步骤,他们必须授权人员 API,但您可以获得任何用户的个人资料名称。

  1. Enable the Advanced Service 在 Apps 脚本编辑器中点击 Services 旁边的 +。然后您可以添加人员服务。

  1. Add the profile scope to your project 通过编辑 appscript.json 清单文件。
  {
    ...
    "oauthScopes": [
      "https://www.googleapis.com/auth/userinfo.profile"
    ],
   ...
  }
  1. 添加一个函数,该函数将从人物中检索当前用户的个人资料名称信息API。
//This will contain a user's names
function getCurrentUser(){
  var currentuser = People.People.get("people/me", {"personFields":"names"})
  return currentuser.names[0]
}

var firstname = getCurrentUser().givenName //gets the user's first name
var fullname = getCurrentUser().displayName // gets the user's full profile name

//You can then add either variable as the name 

GmailApp.sendEmail(address, subject, body, {htmlBody : body + signature,cc: "test@gmail.com",name:firstname});


如果您需要,您不仅可以检索姓名,还可以检索其他用户个人资料信息。查看文档 here.