我正在尝试创建一个 Google 脚本来检查一张纸上一列中的数据是否与另一张纸上另一列中的数据相同,您知道我哪里出错了吗?
谢谢
:)
代码如下:
function myFunction() {
//data from Salesworks
var sheet = SpreadsheetApp.getActive().getSheetByName("Sales Works TEST");
var data_salesworks = sheet.getRange('D3:D121').getValues();
//data from Google Form
var sheet = SpreadsheetApp.getActive().getSheetByName("V3 New Form Responses");
var data_sheet = sheet.getRange('N3:N121').getValues();
if (data_salesworks = data_sheet){
Browser.msgBox('Date Range Correct');
}
else{
Browser.msgBox('Date Range Incorrect');
}
}
当使用检索值时getValues()
,值为二维数组。不幸的是,这样的数组不能直接比较。所以需要修改比较部分。针对这种情况,我想提出以下两种模式。
模式1:
在此模式中,每个数组都转换为字符串并对它们进行比较。
function myFunction() {
//data from Salesworks
var sheet = SpreadsheetApp.getActive().getSheetByName("Sales Works TEST");
var data_salesworks = sheet.getRange('D3:D121').getValues();
//data from Google Form
var sheet = SpreadsheetApp.getActive().getSheetByName("V3 New Form Responses");
var data_sheet = sheet.getRange('N3:N121').getValues();
if (data_salesworks.toString() == data_sheet.toString()) {
Browser.msgBox('Date Range Correct');
} else {
Browser.msgBox('Date Range Incorrect');
}
}
模式2:
在此模式中,使用“for 循环”比较每个数组中的所有元素。
function myFunction() {
//data from Salesworks
var sheet = SpreadsheetApp.getActive().getSheetByName("Sales Works TEST");
var data_salesworks = sheet.getRange('D3:D121').getValues();
//data from Google Form
var sheet = SpreadsheetApp.getActive().getSheetByName("V3 New Form Responses");
var data_sheet = sheet.getRange('N3:N121').getValues();
var f = true;
for (var i=0; i<data_salesworks.length; i++) {
for (var j=0; j<data_salesworks[i].length; j++) {
if (data_salesworks[i][j] != data_sheet[i][j]) {
f = false;
}
}
}
if (f) {
Browser.msgBox('Date Range Correct');
} else {
Browser.msgBox('Date Range Incorrect');
}
}
Note :
这些样品需要满足以下条件。
- 两个比较数据的行数相同。
- 两个比较数据的列数相同。
参考 :
- 获取值() https://developers.google.com/apps-script/reference/spreadsheet/range#getvalues
如果我对你的问题的理解有误,请告诉我。我想修改它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)