我有一个目前可以正常运行的脚本,但不是我想要的。
这会将数据从B列复制到G列,其中包含从openweathermap.org提取信息的公式,并将该公式的值粘贴到H列至L列。我运行此脚本的原因是openweathermap.org的公式会更新。我希望脚本仅在空单元格上运行,而将仅包含H至L列中数据的单元格保留下来。 (因此,它们只粘贴一次值)
我是Google脚本的新手,并且已经在Google上进行了研究,但找不到适合我的脚本的先前结果
我希望代码能够运行,复制和数据,但如果包含数据,则忽略H到L列中的任何单元格
脚本
function moveValuesOnly1() {var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange("Sheet1!B:G");
source.copyTo(ss.getRange("Sheet1!H:L"),
{contentsOnly: true});}
我希望代码能够运行,复制和数据,但如果包含数据,则忽略H到L列中的任何单元格
答案 0 :(得分:0)
这实际上要困难得多,然后我以为会变得如此。
尝试一下:
function moveValuesOnly1() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var srg=sh.getRange(1,2,sh.getLastRow(),6);
var vA=srg.getValues();
sh.getRange(getLastRowOfRange("H:M")+1,8,srg.getHeight(),srg.getWidth()).setValues(vA);
}
function getLastRowOfRange(A1Range) {
var A1Range=A1Range||"H:M";//default for debugging
var ss=SpreadsheetApp.getSheetByName('Sheet1');
var sh=ss.getActiveSheet();
var rg=sh.getRange(A1Range);
var vA=rg.getValues();
for(var i=vA.length-1;i>-1;i--) {
if(vA[i].join("").length==0) {
vA.splice(i,1);
}
}
Logger.log(vA.length);
return vA.length;
}