我希望通过应用程序脚本与两个不同的谷歌电子表格中的每个单元格的值进行比较,并更改单元格的背景颜色以显示单元格已更新但我得到的是 “无法从undefined中读取属性”0.0“。(第16行,文件”代码“)” 我试过opensheetbyname nd得到它的范围仍然没有工作。谷歌搜索此错误没有找到解决方案 这是我的代码
function myFunction() { var sheet1 = SpreadsheetApp.openById("1-l21- 2B7KZ5sBaRh9kmUFOyeDyP1Pnp1_IqhVlAJJR0"); var lastRow = sheet1.getSheetByName("Sheet1").getLastRow(); var lastCol = sheet1.getSheetByName("Sheet1").getLastColumn(); var data = sheet1.getDataRange().getValues(); var sheet2 = SpreadsheetApp.openById("1YOQjiHZXg86XGmFZ0d5noOoLdowc_JFn3wGjICymi_o"); var lastRow2 = sheet2.getSheetByName("Sheet1").getLastRow(); var lastCol2 = sheet2.getSheetByName("Sheet1").getLastColumn(); var data2 = sheet2.getDataRange().getValues(); for(i = 0; i<=lastRow2; i++){ for(j = 0; j<=lastCol2; j++){ if(data[i][j] != data2[i][j]){ sheet1.getActiveCell().setBackground("#FFFF00"); } } } }
更新代码
function myFunction() {
var sheet1 = SpreadsheetApp.openById("1Ibyd4QbrAhLMSD_GjIQYEwGCYrbtNTbMKF7vRA-Rc9Q").getSheetByName("Sheet1");
var lastRow = sheet1.getLastRow();
var lastCol = sheet1.getLastColumn();
var data = sheet1.getDataRange().getValues();
var sheet2 =
SpreadsheetApp.openById("1YOQjiHZXg86XGmFZ0d5noOoLdowc_JFn3wGjICymi_o");
var lastRow2 = sheet2.getSheetByName("Sheet1").getLastRow();
var lastCol2 = sheet2.getSheetByName("Sheet1").getLastColumn();
var data2 = sheet2.getDataRange().getValues();
for(i = 3; i<lastRow2; i++){
for(j = 1; j<lastCol2; j++){
if(data[i][j] != data2[i][j]){
sheet1.getRange(i + 1, j + 1).setBackground("#FFFF00");
}
}
}
}
此外,我已设置编辑触发器以使其正常工作
答案 0 :(得分:0)
data
和data2
是二维数组。另一方面,在您的情况下,lastRow2
和lastCol2
表示data2
数组的长度。这样,当for循环的i
和j
到达lastRow2
和lastCol2
时,就会发生错误。那么这个修改怎么样?
for(i = 0; i<=lastRow2; i++){
for(j = 0; j<=lastCol2; j++){
for(i = 0; i < lastRow2; i++){
for(j = 0; j < lastCol2; j++){
data
和data2
必须与数组的长度相同。请小心。如果此修改不起作用,您能否向我们展示您的样品表?我认为这将有助于思考解决方案。如果我误解了你的问题,我很抱歉。
有2个部分需要修改。在这些修改中,sheet1
假设原始工作表。请修改如下。请输入原始纸张的纸张名称。
var sheet1 = SpreadsheetApp.openById("1-l21-2B7KZ5sBaRh9kmUFOyeDyP1Pnp1_IqhVlAJJR0");
至 :
var sheet1 = SpreadsheetApp.openById("1-l21-2B7KZ5sBaRh9kmUFOyeDyP1Pnp1_IqhVlAJJR0").getSheetByName("### sheet name of original sheet ###");
sheet1.getActiveCell().setBackground("#FFFF00");
至 :
sheet1.getRange(i + 1, j + 1).setBackground("#FFFF00");
function myFunction() {
var sheet1 = SpreadsheetApp.openById("1Ibyd4QbrAhLMSD_GjIQYEwGCYrbtNTbMKF7vRA-Rc9Q").getSheetByName("Sheet1");
var lastRow = sheet1.getLastRow();
var lastCol = sheet1.getLastColumn();
var data = sheet1.getDataRange().getDisplayValues(); // Modified
var sheet2 = SpreadsheetApp.openById("1YOQjiHZXg86XGmFZ0d5noOoLdowc_JFn3wGjICymi_o");
var lastRow2 = sheet2.getSheetByName("Sheet1").getLastRow();
var lastCol2 = sheet2.getSheetByName("Sheet1").getLastColumn();
var data2 = sheet2.getDataRange().getDisplayValues(); // Modified
for(i = 3; i<lastRow2; i++){
for(j = 1; j<lastCol2; j++){
if(data[i][j] != data2[i][j]){
sheet1.getRange(i + 1, j + 1).setBackground("#FFFF00");
}
}
}
}