繁体   English   中英

如何有一个工作的谷歌表脚本,只在空单元格上运行,让其他单元格完好无损

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM