[英]How to have a working google sheets script, that only runs on empty cells leaving other cells intact
我有一个目前有效的脚本但不是我想要的。
这会将数据从B列复制到G,其中包含从openweathermap.org提取信息的公式,并将公式的值粘贴到H到L列中。我运行此脚本的原因是openweathermap.org中的公式更新。 我希望脚本只在空单元格上运行,只留下已经包含列H到L的数据的单元格。 (所以他们只粘贴一次值)
我是谷歌脚本的新手,并已在谷歌上进行过研究,但无法找到适用于我的脚本的先前结果
我希望代码能够运行并复制和数据,但如果它包含数据,则忽略列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中的任何单元格
这实际上比我认为的要困难得多。
尝试这个:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.