我是应用程序脚本的新手,我想做一个价格比较脚本,我有两列,一列通过blockspring addon
和import.io
获取数据,这提供了关于网站的信息,一列是产品的名称,另一列是该产品的价格。我想通过某种方式在价格变化时注意到我,所以我创建了一个脚本,复制这两列的值,存储它们,当我触发它时,它会从这两列中获取数据并进行比较,现在为了测试,我有一个简单的alter框,它会告诉我是否有数据变化。
目前,我可以编写一个脚本来获取值并进行比较,但由于某种未知的原因,它不起作用。
这是我的剧本。也许将来我想提醒一下哪些数据发生了特别的变化,但这是我的第一个脚本儿子,我尽量放松。
这是我正在使用的电子表格
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);
}
}
无法通过==方法比较数组。您需要遍历每个元素并进行比较。
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);
}
不能比较这样的范围,因为它们是二维数组。我修改了您的代码,并包含了一个比较两列的函数。它不适用于具有更多列的范围,但如果您需要,可以很容易地增强它。
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);
}
}