我是应用脚本的新手,我想做一个价格比较脚本,我有两列,一列通过blockspring addon
和import.io
获取数据,这提供了有关网站的信息,一列产品名称和其他产品的价格。我想要一些方法在价格变化时注意到我,所以我创建了一个脚本,复制这两列的值,存储它们,当我触发它时,它从两列获取数据并进行比较,现在用于测试我有一个简单的变换框,告诉我一些数据是否有变化。
现在,我能够编写一个获取值并进行比较的脚本,但由于某些未知原因,它不起作用。
这是我的剧本。也许在将来我想提醒哪些数据发生了特别的变化,但这是我的第一个脚本儿子,我试着放轻松。
这是我正在使用的电子表格
https://docs.google.com/spreadsheets/d/1HleYu-dCbUReOH-7SnEFipJa6E9wEcEzasQ7ns2tXso/edit?usp=sharing
function moveValuesOnly() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source1 = ss.getRange("A15:A105");
var source2 = ss.getRange("B15:B105");
var source3 = ss.getRange("A16:A105").getValues();
var source4 = ss.getRange("E16:E105").getValues();
var source5 = ss.getRange("E15:E105");
if (source5.isBlank()) {
source1.copyTo(ss.getRange("E15:E105"), {contentsOnly: true});
source2.copyTo(ss.getRange("F15:F105"), {contentsOnly: true});
Browser.msgBox('VALUES COPIED !', Browser.Buttons.OK);
}
if (source3 == source4) {
Browser.msgBox('NOTHING CHANGES !', Browser.Buttons.OK);
}
else {
Browser.msgBox('SOMETHING CHANGES!', Browser.Buttons.OK);
}
}
答案 0 :(得分:0)
无法通过==方法比较数组。您需要遍历每个元素并进行比较。
var Inspector = false;
for(var i=0;i<source3.length;i++)
{
if(source3[i][0].toString() != source4[i][0].toString())
{
Inspector = true;
}
}
if(Inspector)
{
Browser.msgBox('SOMETHING CHANGES!', Browser.Buttons.OK);
}
else
{
Browser.msgBox('NOTHING CHANGES !', Browser.Buttons.OK);
}
答案 1 :(得分:0)
您无法比较这样的范围,因为它们是二维数组。我修改了你的代码并包含了一个比较2列的函数。它不适用于包含更多列的范围,但如果需要,可以很容易地增强它。
function moveValuesOnly() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source1 = ss.getRange("A15:A105");
var source2 = ss.getRange("B15:B105");
var source3 = ss.getRange("A16:A105").getValues();
var source4 = ss.getRange("E16:E105").getValues();
var source5 = ss.getRange("E15:E105");
if (source5.isBlank()) {
source1.copyTo(ss.getRange("E15:E105"), {contentsOnly: true});
source2.copyTo(ss.getRange("F15:F105"), {contentsOnly: true});
Browser.msgBox('VALUES COPIED !', Browser.Buttons.OK);
}
function equalColumns(col1, col2) {
if (col1.length !== col2.length) return false;
var equal = true;
for (var i = 0; i < col1.length; i ++) {
if (col1[i][0] !== col2[i][0]) {
equal = false;
break;
}
};
return equal;
}
if (equalColumns(source3,source4)) {
Browser.msgBox('NOTHING CHANGES !', Browser.Buttons.OK);
}
else {
Browser.msgBox('SOMETHING CHANGES!', Browser.Buttons.OK);
}
}