【问题标题】:How to set value in another column of Google Sheets based on certain value of column in the same sheets如何根据同一工作表中列的特定值在 Google 表格的另一列中设置值
【发布时间】:2020-09-21 07:23:02
【问题描述】:

我有一张包含电子邮件地址列表的表格。我想根据 B 列中电子邮件的值自动填充 D 列。

我想在 D 列中自动填充的是电子邮件地址的名字。

我想要的是这样的:

假设我知道,或者我可以设置电子邮件列表的名字。

  • ken@gmail.com =

  • ben02@hotmail.com =

  • kobe.brayant@gmail.com = 神户

  • lebronJAMES@gmail.com = 勒布朗

问题是如何根据电子邮件地址的值自动填充列 D 或 (NAME)。

请注意,数据(A 到 C 列)是根据 Google 表单自动填充的。

【问题讨论】:

  • 您能否详细说明让我知道或者我可以设置电子邮件列表的名字。?如果问题只是“如何自动填充?”,this 应该回答您的问题。
  • 工作表上的数据来自谷歌表单......所以如果新数据来自(比如说 ken@gmail.com)。我想用数据“Ken”自动填充 D 列。
  • 但是“Ken”是如何与“ken@gmail.com”相关联的呢?你有清单吗?你有没有尝试过填充它?
  • 嗯。如果我可以在 appscript 上设置它,比如......如果你看到值“ken@gmail.com”,那么返回值将是“Ken”
  • 是的,你可以。最好使用 Object/Map(键值对)。

标签: javascript google-apps-script google-sheets google-sheets-formula google-forms


【解决方案1】:

在单元格 D1 中试试这个数组公式:

=ARRAYFORMULA({"NAME";proper(REGEXEXTRACT(B2:INDEX(B:B,COUNTA(B:B)),"^[a-z]+"))})


作为 Google Apps 脚本 中的完整解决方案,您可以这样做:

function myFunction() {
  
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Form Responses 1");
  const emails = sh.getRange("B2:B"+sh.getLastRow()).getValues().flat();
  const names = emails.map(str=>str.match('^[a-z]+')[0])
                .map(name=>name.charAt(0).toUpperCase()+name.slice(1));
  sh.getRange("D2:D"+sh.getLastRow()).setValues(names.map(nm=>[nm]));
}

假设工作表名称是Form Responses 1


为了说明:

const emails = ['ken@gmail.com','kobe.brayant@gmail.com',
                  'ben02@hotmail.com','lebronJAMES@gmail.com']; 
const names = emails.map(str=>str.match('^[a-z]+')[0])
                .map(name=>name.charAt(0).toUpperCase()+name.slice(1));
console.log(names);

【讨论】:

  • 我有办法设置 NAME 值吗?假设对于电子邮件 (ben02@hotmail),NAME 值将是 Benjamin?
  • 这在 Appscript 中可行吗?
  • 不,我认为你做不到。您只能像 if(d2="Ben","Benjamin) 之类的那样手动执行此操作。您可以使用 GAS,但此公式将来会更快,更易于维护。@kendy
  • 由 (d2="Ben","Benjamin) 手动执行是什么意思?我在哪里设置?
  • =ARRAYFORMULA({"NAME";if(proper(REGEXEXTRACT(B2:INDEX(B:B,COUNTA(B:B)),"^[a-z]+"))="Ben","Benjamin",if(proper(REGEXEXTRACT(B2:INDEX(B:B,COUNTA(B:B)),"^[a-z]+"))="Ken","Kendy",proper(REGEXEXTRACT(B2:INDEX(B:B,COUNTA(B:B)),"^[a-z]+"))))})@kendy
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 2018-12-11
  • 1970-01-01
  • 2015-08-03
相关资源
最近更新 更多