Google apps script 可以使用函数一次,而不是两次,第二次未定义

Google apps script 可以使用函数一次,而不是两次,第二次未定义,google-apps-script,Google Apps Script,编辑:修复了虚拟数据,感谢您的评论 我想创建一系列函数来创建电子邮件。我需要删除输入的某些部分,但保留其他部分 一般的想法是:只保留第一个名称,从开始返回字符串,直到返回一个空格字符。但是,如果姓氏开头有一个“particle”,则返回包含该particle的字符串,直到下一个空格 有一个正则表达式生成器可以创建一个与名称的有趣部分匹配的大型正则表达式 第一个代码段启动users()函数。我已经将一些硬编码数据用于处理,但它应该从谷歌电子表格中提取出来。如果我两次使用oneName()函数,就会

编辑:修复了虚拟数据,感谢您的评论

我想创建一系列函数来创建电子邮件。我需要删除输入的某些部分,但保留其他部分

一般的想法是:只保留第一个名称,从开始返回字符串,直到返回一个空格字符。但是,如果姓氏开头有一个“particle”,则返回包含该particle的字符串,直到下一个空格

有一个正则表达式生成器可以创建一个与名称的有趣部分匹配的大型正则表达式

第一个代码段启动
users()
函数。我已经将一些硬编码数据用于处理,但它应该从谷歌电子表格中提取出来。如果我两次使用
oneName()
函数,就会出现一个错误(请参阅下一个代码片段以了解单个使用示例)

无法读取未定义“”的属性“1”

users();
函数用户(){
var数据=['Jean','A Marca',['Marie','A Marca von Machin',['Pierre-Philippe','A Marca von Machin'],['Charles-Henri','Machin von Truc'],['Franz Albert','All'Arrabiata von Truc'],['Jérôme','All'Arrabiata Truc'],['Heinz','n'Goye'],['Anne-MéBara'],['Angel And Angel Di Maria y y Fôdes],['Herdo','s Santos']
var输出=[];
对于(数据中的i){
var prenom=oneName(数据[i][0])[0];
控制台日志(prenom);
var nom=oneName(数据[i][1])[0]
控制台日志(nom);
}
}
函数名(nom){
var particules1=['de','di','da','dos','von','del','dell','dela','el','al','d','do','du','des','de la','a','all','l','n','m'];
var particules2=['de','di','da','dos','von','del','dell','della','el','al','d','do','du','des','dela','a','all','l','n','m'];
var regex=新的RegExp(regexBuilder(particules1),“gi”);
返回名称匹配(正则表达式);
}
函数regexBuilder(ListParticules){
var regex='';
for(i在列表中的分词){
if(i==listedparticules.length-1){
regex=regex+'(^'+listedparticules[i]+'[a-zA-Z\u00c0-\u024f\u1e00-\u1eff]+)(^[a-zA-Z\u00c0-\u024f\u1e00-\u1eff\']+);
}否则{
regex=regex+'(^'+listedparticules[i]+'[a-zA-Z\u00c0-\u024f\u1e00-\u1eff]+);
}
}
返回正则表达式;
}
我认为这是重要的修改点之一

作为另一个修改点,在您的脚本中,在运行
var prenom=oneName(data[i][0])[0]
之后,
data[i]
变成
undefined
,因为
i
for(i In data){}
被用作全局变量运行时,
i
的值在
regexBuilder()
的函数中更改。由此,我认为发生了错误

为了避免这个错误,这个修改怎么样?在这个修改中,(数据中的i){的
被修改为(数据中的var i){
。请把这看作是几个答案中的两个

修改脚本:
users();
函数用户(){
var数据=['Jean','A Marca',['Marie','A Marca von Machin',['Pierre-Philippe','A Marca von Machin'],['Charles-Henri','Machin von Truc'],['Franz Albert','All'Arrabiata von Truc'],['Jérôme','All'Arrabiata Truc'],['Heinz','n'Goye'],['Anne-MéBara'],['Angel And Angel Di Maria y y Fôdes],['Herdo','s Santos']
var输出=[];

对于(vari-in-data){//或对于(vari=0;i['Charles-Henri,Machin von Truc']
只是一个元素。它应该是
['Charles-Henri','Machin von Truc']
。谢谢@Tanaike。你解决了它。我在这里学到了一些东西:迭代变量可以“触摸”“由另一个函数中的另一个函数生成……这有点奇怪。我的代码几乎很好,但我永远不会单独找到它。@Romain Schmid感谢您的回复。我很高兴您的问题得到了解决。