因此,我有一个电子表格,用于检查多个帐户的 Instagram 关注者(使用公式),我想要一个脚本,只需将包含关注者数量的单元格复制到另一个单元格,并仅在有新信息可用时进行覆盖(跳过错误和空白) )。由于此公式经常出现错误或需要很长时间才能加载,因此我认为使用脚本来始终保持最新信息可见会很有趣。这可能吗?我找到了下面的公式,它有效,但不会跳过错误、空白或加载......并且无论如何都会覆盖。
function copyValuesOnly() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange('ALL!K8:K')
source.copyTo(ss.getRange('ALL!L8'), {contentsOnly: true});
};
我尝试过更改脚本,但我不太理解它。如果有人可以帮助我编写脚本(我认为很简单),我将非常感激。
此函数仅复制大于零的数字值,它会跳过其余部分,但在部分中使用 setValues() 来尽快存储数据,并且可以大大加快写入过程。
function copyValuesOnly() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Sheet0");//update sheet name
const sr = 2;//update data start row
const vs = sh.getRange(sr, 11, sh.getLastRow() - sr + 1).getValues().flat();
const obj = vs.reduce((acc,e,i) => {
if(!isNaN(e) && e > 0) {//this determines what it good data that should be copied the other values will be skipp
if(acc.buffer.length == 0) {
acc.pA.push(acc.pA.length);
acc[`${acc.pA[acc.pA.length - 1]}`] = {sr: i + sr, elems:[[e]]};
acc.buffer.push(e)
} else {
acc[`${acc.pA[acc.pA.length - 1]}`].elems.push([e]);
acc.buffer.push(e);
}
} else {
if(acc.buffer.length > 0) {
acc.buffer = [];
}
}
return acc;
},{pA:[],buffer:[]});
obj.pA.forEach(p => {
let v = obj[p].elems;
sh.getRange(obj[p].sr,12,v.length,v[0].length).setValues(v)
});
const end = "is near";
}