我对Google脚本还很陌生。我有一个学生名单Google表格,其中包含人口统计信息,包括ID号。我还有一个响应表,该表自动收集B列上的电子邮件地址(电子邮件地址由ID号加上“ @ foo.org”创建)。我试图让我的脚本通过自动收集的电子邮件进行解析,将电子邮件的ID部分映射到C列上。然后,我使用for循环来检查提取的ID编号是否与我的主要花名册相对应,并映射其余信息在答案表上针对同一学生。
到目前为止,我只能正确映射响应表中的第一行;从第二行开始,我仅看到数字ID,但未映射其他相关列。这是我目前拥有的:
function extractId() {
var responsesSheet = SpreadsheetApp.openById('XXXXXXX').getSheetByName('Sheet1');
var rosterSheet = SpreadsheetApp.openById('XXXXXXX').getSheetByName('Sheet1');
var responsesHighestEntry = responsesSheet.getLastRow();
var email;
var idNumber;
var rosterLastRow = rosterSheet.getLastRow();
var rosterArray = rosterSheet.getRange(2, 1, (rosterLastRow - 1)).getValues();
var studentResponsesRow;
var i;
var x;
var y = 2;
var fullName;
var grade;
var advisoryTeacher;
var advisoryRoom;
for (i = 2; i < responsesHighestEntry; i++) {
email = responsesSheet.getRange(i, 2).getValue();
idNumber = email.replace(/\@(.*)/i,"");
responsesSheet.getRange(i, 3).setValue(idNumber);
for (x = 0; x < rosterLastRow; x++) {
if (rosterArray[x] == idNumber) {
studentResponsesRow = y;
fullName = rosterSheet.getRange(y, 2).getValue();
responsesSheet.getRange(y, 4).setValue(fullName);
grade = rosterSheet.getRange(x + 2, 6).getValue();
responsesSheet.getRange(studentResponsesRow, 5).setValue(grade);
advisoryTeacher = rosterSheet.getRange(x + 2, 7).getValue();
responsesSheet.getRange(studentResponsesRow, 6).setValue(advisoryTeacher);
advisoryRoom = rosterSheet.getRange(x + 2, 8).getValue();
responsesSheet.getRange(studentResponsesRow, 7).setValue(advisoryRoom);
}
y++;
}
}
}
答案 0 :(得分:2)
如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。
此修改后的脚本的流程如下。
<OutputType>