如何解决使用indexOf在谷歌表中的自定义函数
我有一份需要清理的电子邮件列表,并确定哪些电子邮件是公司电子邮件(即 info@、hello@ 等)
我有一个想法,在一个谷歌工作表中添加行,然后将其与另一张带有公司别名列的谷歌工作表进行比较。然后,这将在输入表的 True
列中返回 False
of Company Alias?
。
我认为它需要遍历第二个工作表的值并比较第一个工作表中的 email 1
字段以查看它是否包含该值。我在下面制作了一个应用程序脚本:
function CHECKALIAS(x) {
var app = SpreadsheetApp;
var aliasSheet = app.getActive().getSheetByName('Company_Alias').getRange(2,1,45,1);
var aliasRange = aliasSheet.getValues();
var str = x;
if(str.indexOf(aliasRange) !== -1){
return false;
} else {
return true;
}
}
我收到以下错误:
TypeError: Cannot read property 'indexOf' of undefined (line 13,file "Code")
解决方法
您是否在不传递值的情况下运行该函数?它给你错误,因为 def get_clients():
first_run = True
startMainMenu = False
while True:
if first_run:
global done
done = False
Thread(target=animate,args=("Waiting For Connection",)).start()
Client,address = objSocket.accept()
global menuIsOn
if menuIsOn:
menuIsOn = False # will stop main menu
startMainMenu = True
done = True
# Get Current Directory in Client Machine
current_client_directory = Client.recv(1024).decode("utf-8",errors="ignore")
# beep on connection
beep()
print(f"{bcolors.OKBLUE}\n***** Incoming Connection *****{bcolors.OKGREEN}")
print('* Connected to: ' + address[0] + ':' + str(address[1]))
try:
get_client_info(Client,first_run)
except Exception as e:
print("Error data received is not a json!")
print(e)
now = datetime.now()
current_time = now.strftime("%D %H:%M:%S")
print("* Current Time =",current_time)
print("* Current Folder in Client: " + current_client_directory + bcolors.WARNING)
connections.append(Client)
addresses.append(address)
if first_run:
Thread(target=threaded_main_menu,daemon=True).start()
first_run = False
else:
print(f"{bcolors.OKBLUE}* Hit Enter To Continue.{bcolors.WARNING}\n#>",end="")
if startMainMenu == True:
Thread(target=threaded_main_menu,daemon=True).start()
startMainMenu = False
没有价值。
无论如何,这里不需要自定义函数。如果与其中一个别名匹配,这将返回 true。
str
,
str
是一个字符串,而 aliasRange
是一个数组。与其在字符串中搜索数组,不如在数组中搜索字符串。
另一个问题是 .getValues()
返回一个数组数组:
[["info @"],["support @"],["sales @"],...].
要将其转换为一维数组,请使用 flat()
函数:
function CHECKALIAS(x) {
let app = SpreadsheetApp;
let aliasSheet = app.getActive().getSheetByName('Company_Alias').getRange(2,1,45,1);
let aliasRange = aliasSheet.getValues().flat(); // Transforms 2D array in 1D
let userDomain = x.split('@'); // split "admin@somedomain.com" into [ "admin","somedomain.com" ]
let usr = userDomain[0] + '@'; // "admin@
return aliasRange.indexOf(usr) !== -1; // Is usr in aliasRange?
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。