我有一个Google表单,可在链接的电子表格中收集回复。表单中的字段之一是Username
(工作表中的B列)。我正在编写一个脚本,以在新用户(唯一用户名)提交时通知我。为此,我:
这是到目前为止我得到的:
function isUserNew() {
var spreadsheet = SpreadsheetApp.openById("INSERT ID HERE");
var sheet = SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
var last_row_number = sheet.getLastRow()
var penultimate_row_number = (last_row_number-1)
var latest_username = sheet.getRange(last_row_number, 2).getValue()
var usernames = sheet.getRange("B2:B" + penultimate_row_number).getValues();
}
这给了我一个看起来像usernames
的2D数组[[UserA],[UserB],[UserC],[UserC],[UserA],[UserX]].
,然后我尝试了if (usernames.indexOf(latest_username) == -1
,但这不起作用-仅适用于1D数组。我想到了使用循环将数组转换为一维:
for (var i = 0; i < usernames.length; i++) {
Logger.log(usernames[i][0]);
}
这使记录器正确记录了我想要的所有用户名,但是我不知道如何将它们放入数组中。
2个主要问题:
答案 0 :(得分:1)
是的,您可以将数组展平并在进行操作时与indexOf
进行比较:
var flattened_usernames = [] ;
for (var i = 0; i < usernames.length; i++) {
flattened_usernames.push(usernames[i][0]);
}
但是最好还是在循环内进行检查:
if (usernames[i][0] === latest_username)
顺便说一句,我假设您知道如何直接从onFormSubmit
事件中获取用户名,而不是从工作表的最后一行中获取用户名。但是,如果没有,您应该学习如何做!