我正在尝试使用第二个Google Sheet的数据更新Google表。
a"主题表"包含每个录制学科的学生的列表,"老师表"包含特定教师课中该学科的学生列表。
受试者的负责人会将列添加到主题表中,以记录测试分数的值。
添加了这些标题后,我的脚本需要以相同的标题更新教师表。
此外,教师表中的任何学生排,但在主题表中不存在的任何学生都将添加到主题表的末尾。学生在称为" UPN"的列中通过一个值确定。
在进行比较之前,我确保两个床单都具有相同数量的列:
//ensure every row in teacherArray has (at least) the same number of cols as subjectArray
if (teacherArray[0].length < subjectArray[0].length)
{
for (row = 0 ; row < teacherArray.length; row ++)
{
for (col = teacherArray[0].length; col < subjectArray[0].length; col ++)
{
teacherArray[row].push("");
dataChanged = true;
}
}
}
i然后进行各种比较和更新...
如果教师中有任何行中不存在主题中的任何行,我将它们推到主题的尽头。
if (!foundUPN)
{
dataChanged = true;
subjectArray.push(teacherArray[tar]);
}
最后,我尝试将数据写回我的工作表:
if (newSubjectData)
{
sheet.getActiveRange();
sheet.clear();
for (var row = 0; row < newSubjectData.length; row ++)
{
Logger.log("row: " + row + " width: " + newSubjectData[0].length);
}
//Logger.log("About to try to write updated newsubjectdata: rows: " + newSubjectData.length + " cols: " +newSubjectData[0].length + "sheet rows: " + sheet.getMaxRows() + " cols: " + sheet.getMaxColumns());
sheet.getRange(1,1,newSubjectData.length, newSubjectData[0].length).setFormulas(newSubjectData).setNumberFormat('@STRING@');
}
我已经清除了表格的内容,然后将范围设置为数组的大小。我已经确认,通过迭代每行并记录宽度,数组是完美的矩形(每行都在此处包含16个项目时在这些特定的电子表格上运行时(,但是我的电子表格不会更新。它继续报告"例外:不正确的范围宽度,为14,但应为16"
14是在使用其他标题之前原始的教师表/数组的宽度,但是此数据不是所使用的,而是更新的版本。真的很困惑和困惑,我做错了什么?
发现了我的错误。首先,我尝试显示每行中数组宽度的尝试并未显示实际值。
for (var row = 0; row < newSubjectData.length; row ++)
{
Logger.log("row: " + row + " width: " + newSubjectData[0].length);
}
newsubjectdata [0] .length应该是newsubjectdata [row] .length
for (var row = 0; row < newSubjectData.length; row ++)
{
Logger.log("row: " + row + " width: " + newSubjectData[row].length);
}
修复,这表明我实际上,每行都不是相同的宽度。我最初的尝试确保两个阵列的宽度不起作用,因此我将调整大小操作移至将新行推向主要主题阵列之前。
if (!foundUPN)
{
dataChanged = true;
//still not getting the correct col widths
if (teacherArray[tar].length < subjectArray[0].length)
{
for (cols = teacherArray[tar].length; cols < subjectArray[0].length; cols ++)
{
teacherArray[tar].push("");
}
}
subjectArray.push(teacherArray[tar]);
Logger.log("UPN not found pushing row width: " + teacherArray[tar].length);
}