通过Google脚本将多个单元格复制到一个单元格中

时间:2020-02-01 18:21:37

标签: google-apps-script google-sheets

有人可以告诉我如何通过Google脚本复制多个单元格并将其合并为一个单元格吗?

这是我现在编写的函数。问题是源单元格范围内的多个单元格将被精确复制到目标单元格中​​。

相反,我只想将其合并到一个单元格中。

function copyToSheet() {
  var srcTitle=getActiveSheet().getRange("C7");
  var srcText=getActiveSheet().getRange("C22:C28");
  var srcOptions=getActiveSheet().getRange("C32:C41");
  var srcListings=getActiveSheet().getRange("C44:C60");

  var extractedValues = [srcTitle, srcText, srcOptions, srcListings]

  var dstTitle="C4";
  var dstText="D4";
  var dstOptions="E4";
  var dstListings="F4";


  var dstList = [dstTitle, dstText, dstOptions, dstListings]

  var index;
  for (index = 0; index < extractedValues.length; ++index) {
    extractedValues[index].copyTo(getDestinationSheet().getRange(dstList[index]), {contentsOnly:true})
  }

}

2 个答案:

答案 0 :(得分:2)

复制并合并

function copyToAndMerge() {
  var ss=SpreadsheetApp.getActive();
  var ssh=ss.getSheetByName('Sheet1');//src sheet
  var dsh=ss.getSheetByName('Sheet2');//des sheet
  var v=[];
  var rgA=['C7','C22:C28','C32:C41','C44:C60'];//input ranges  
  rgA.forEach(function(rg){
    var vA=ssh.getRange(rg).getValues();
    vA.forEach(function(r,i){v=v.concat(r);});
  });
  //Logger.log(v);
  //v.sort(function(a,b){return a-b;});//if you want to sort the output this sorts numerically
  dsh.getRange(1,1).setValue(v.join(', '));//output cell you can change the delimiter
}

输出单元格:

enter image description here

输入只是C列下的顺序号。

答案 1 :(得分:0)

使用dsh.getRange(1,1).setValue(v.join(', '));受到@cooper的启发

我一直认为我只能在对象上运行复制功能。相反,我本可以在工作表对象上使用setValue函数。

function copyToSheet() {
  var srcTitle=getActiveSheet().getRange("C7").getValue();
  var srcText=getActiveSheet().getRange("C22:C28").getValues();
  var srcOptions=getActiveSheet().getRange("C32:C41").getValues();
  var srcListings=getActiveSheet().getRange("C44:C60").getValues();

  var extractedValues = [srcTitle, srcText, srcOptions, srcListings]

  var dstTitle="C4";
  var dstText="D4";
  var dstOptions="E4";
  var dstListings="F4";


  var dstList = [dstTitle, dstText, dstOptions, dstListings]

  var index;
  for (index = 0; index < extractedValues.length; ++index) {
    getDestinationSheet().getRange(dstList[index]).setValue(extractedValues[index]);
  }

}