如何将值从一张纸粘贴到另一张纸到特定列的最后一行

应用脚本的新手,但是通过大量研究成功地构建了自己的脚本,但是现在我的脚本遇到了错误。下面是我当前的代码:

  function MyFunction() {
  var sss = Spreadsheetapp.getactive(); 
  var ss = sss.getSheetByName('Daily Sales'); 
  var range = ss.getRange('B8:H83'); 
  var data = range.getvalues();
  var OUrange = ss.getRange('K8:Q83'); 
  var OUdata = OUrange.getvalues();  
  var ts = sss.getSheetByName('Tracker'); 


  ts.getRange(ts.getLastRow()+1,1,data.length,data[0].length).setvalues(data); 
  ts.getRange(ts.getLastRow()+1,OUdata.length,OUdata[0].length).setvalues(OUdata);

}

在“每日销售额”工作表中,我从BH和KQ列复制值,并将其粘贴到“跟踪器”工作表的最后一行,从A列开始。在K. Col中的“每日销售额”值正确粘贴在BH值以下,因此对这些结果感到满意。

在“跟踪器”页面上,这些值在A-G列中。但是,我此后基于脚本数据在H列和I列中添加了基于脚本数据的公式,并在H列中手动添加了这些公式。这些公式被复制到工作表的整个列中(即行5000)。由于添加了这些公式,因此脚本现在将值粘贴到A5001中。

我意识到这是由于这些公式引起的,但是有没有一种方法可以更新我的脚本以粘贴到A列的最后一行中,同时又将这些公式保留在I列和J列中?预先感谢。

zk79281988 回答:如何将值从一张纸粘贴到另一张纸到特定列的最后一行

您可以创建一个辅助函数来计算给定列的第一行(而不是包含公式的列)

function MyFunction() {
var sss = SpreadsheetApp.getActive(); 
var ss = sss.getSheetByName('Daily Sales'); 
var range = ss.getRange('B8:H83'); 
var data = range.getValues();
var OUrange = ss.getRange('K8:Q83'); 
var OUdata = OUrange.getValues();  
var ts = sss.getSheetByName('Tracker'); 
var values = data.concat(OUdata).filter(function (r) {return r[0]});
var fr = findFirstFreeRow(ts,1) // second parameter represents column to check for first free row
ts.getRange(fr,1,values.length,values[0].length).setValues(values); 
}


function findFirstFreeRow(sheet,colNum) {
var v = sheet.getRange(1,colNum,sheet.getLastRow()).getValues(),l = v.length,r;
while (l >= 0) {
    if (v[l] && v[l][0].toString().length > 0) {
        r = (l + 2);
        break;
        } else {
        l--;
        }
    }
return r;
}

看看是否有帮助?

,

从“跟踪器”工作表中删除多余的空行后,您可以使用appendRow函数使用手动值创建新行(将需要公式的单元格留空)。

输入手动值后,您可以获取需要公式的单元格并在其上使用setFormula

为简洁起见,如果您希望A,B,C,E,F列具有手动值,而D列具有公式,则可以执行以下操作:

var sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(['A','B','C','','E','F']);
sheet.getRange(sheet.getLastRow(),4).setFormula('=FORMULA(HERE)');
本文链接:https://www.f2er.com/3157093.html

大家都在问