Javascript 设置一个范围,然后将范围合并到另一张图纸上的单个单元格,每个合并单元格上方有一行

Javascript 设置一个范围,然后将范围合并到另一张图纸上的单个单元格,每个合并单元格上方有一行,javascript,loops,google-apps-script,concatenation,Javascript,Loops,Google Apps Script,Concatenation,我试图取A5-A(最后一行)的范围,然后在另一张纸上做一个##note行,并在下面插入每行的具体单元格。在第二张图纸中合并并设置新行后,清除从第一张图纸复制的区域 我在研究如何使用具体函数,因为在组合单元格时,单元格之间需要一个空间,所以我想使用以下公式: =CONCAT(" ",textjoin(" ", 1, A5:5)) 但我不知道如何在谷歌脚本中实现这个功能。另外,我想在上面有一个单元格,上面有“##note line”,所以我认为在代码中也应该

我试图取A5-A(最后一行)的范围,然后在另一张纸上做一个##note行,并在下面插入每行的具体单元格。在第二张图纸中合并并设置新行后,清除从第一张图纸复制的区域

我在研究如何使用具体函数,因为在组合单元格时,单元格之间需要一个空间,所以我想使用以下公式:

=CONCAT(" ",textjoin(" ", 1, A5:5))
但我不知道如何在谷歌脚本中实现这个功能。另外,我想在上面有一个单元格,上面有“##note line”,所以我认为在代码中也应该有循环

这是我试图做的一个视觉效果

然后将其放入另一张纸中,如下所示:

这就是我被代码卡住的地方:

函数sendrowsTotherTab()
{
//定义所有活动图纸
var ss=SpreadsheetApp.getActiveSpreadsheet();
var eddGenSheet=ss.getSheetByName(“Eddie输入生成器”);
var lrwithcontentofEddGenSheet=eddGenSheet.getLastRow()+1;
var lcwithcontentofEddGenSheet=eddGenSheet.getLastColumn();
var sheet2=ss.getSheetByName(“组合页面”);
//当前组合变量
var totalcurrentstringRows=LR,内容见附录4;
var fullcurrentString=eddGenSheet.getRange(5,1,totalcurrentstringRows,LCWithContentOfEdGensheet);
var cslastRow=fullcurrentString.getLastRow();
var bottomrightcolumnNumber=eddGenSheet.getRange(lWithContentOfEdGensheet-1,1).getNextDataCell(SpreadsheetApp.Direction.NEXT).getColumn();
//这是开始发送日期的位置
var insercellsstartingHere=sheet2.getrange(“B19”);
我是循环和编码的新手,我甚至看不到具体的动作

function myfunc101()  {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Sheet1');
  const tsh=ss.getSheetByName('Sheet2');
  tsh.clearContents();
  const rg=sh.getRange(5,1,sh.getLastRow()-4,sh.getLastRow());
  const vs=rg.getDisplayValues();
  vs.forEach((r,i)=>{tsh.appendRow([`## ${i+1} notes`]);tsh.appendRow(r);});
}

function myfunc102()  {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Sheet1');
  const tsh=ss.getSheetByName('Sheet2');
  tsh.clearContents();
  const rg=sh.getRange(5,1,sh.getLastRow()-4,sh.getLastRow());
  const vs=rg.getDisplayValues();
  vs.forEach((r,i)=>{tsh.appendRow([`## ${i+1} notes`]);tsh.appendRow([r.join(' ')]);});
}
这将清除B19到工作表的底部,然后将结果发布到那个里

function myfunc103()  {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Sheet1');
  const tsh=ss.getSheetByName('Sheet2');
  tsh.getRange(19,2,tsh.getLastRow()-18,1).clearContent();
  const rg=sh.getRange(5,1,sh.getLastRow()-4,sh.getLastRow());
  const vs=rg.getDisplayValues();
  let oA=[];
  vs.forEach((r,i)=>{oA.push([`## ${i+1} notes`]);oA.push([r.join(' ')]);});
  tsh.getRange(19,2,oA.length,oA[0].length).setValues(oA);
}

非常接近我所寻找的,唯一的一件事是我还试图将每一行的列合并到一个单元格中,当它们被添加到一起时,在它们之间留有空格。现在这可以将单元格移到页面和注释中,但是它们不是作为单个单元格发送的,而是第二个单元格,但不允许单元格包装效果,我已经成功了如果我想改变它开始的位置,我只需通过设置我想要的行的范围来改变tsh位置,对吗?你想从哪里开始?你有一些标题行吗?目标是第2页的b19