Google apps script 如何看待下一个附加值?谷歌应用程序脚本

Google apps script 如何看待下一个附加值?谷歌应用程序脚本,google-apps-script,Google Apps Script,我正在尝试将表1和表2合并为表3,我希望表3的底行是表1或表2的下一个输入值。例如,如果第11行添加到第1页中,我希望它是第3页中的第15行。请参阅附件中的图片 我还有以下代码: [![function combineSheets() { var sApp = SpreadsheetApp.getActiveSpreadsheet(); var s1= sApp.getSheetByName("Sheet1"); var s2= sApp.getSh

我正在尝试将表1和表2合并为表3,我希望表3的底行是表1或表2的下一个输入值。例如,如果第11行添加到第1页中,我希望它是第3页中的第15行。请参阅附件中的图片

我还有以下代码:

 [![function combineSheets() {
    var sApp = SpreadsheetApp.getActiveSpreadsheet();
    var s1= sApp.getSheetByName("Sheet1");
    var s2= sApp.getSheetByName("Sheet2");
    var s3= sApp.getSheetByName("Sheet3");

  
  var s1values = s1.getRange(1,1,s1.getLastRow(),3).getValues();
  var s2values = s2.getRange(1,1,s2.getLastRow(),3).getValues();
 
  s3values =  s1values.concat(s2values);
  s3.getRange(1,1,s3values.length,3).setValues(s3values);
}][1]][1]
在此处输入图像描述

回答 使用。检查:

您可以使用相同的标点符号将多个范围合并为一个连续范围。例如,要将
A1-A10
中的值与
D1-D10
中的值组合起来,可以使用以下公式在连续列中创建一个范围:
={A1:A10;D1:D10}

公式
=query({Sheet1!A:C;Sheet2!A:C},“选择*其中Col1不为null”)

更新 要在下面添加新值,必须对范围进行排序。使用该方法,您可以轻松完成此操作。另外,在第二张纸上,我不会选择第一行,因为你会得到两次标题

代码 考虑
最后,你必须记住使用的方法。在这种情况下,作为一个没有触发器的函数,它仅在按下
run
时执行。您可以在负责调用函数的任何页面(或所有三个页面)上添加按钮。也可以使用触发器检测任何单元格中的编辑并调用函数。最好的方法取决于您的场景和需求。

如何在表1和表2中添加值?表3中值的顺序是否重要,或者两个表的值是否可以像示例中那样连接起来?据我所知,您的函数
combineSheets()
工作正常。你想要什么?是否希望能够以交互方式更新图纸1和图纸2?或者要复制Sheet2中的所有行而不复制其第一行?如果将范围更改为
var s2values=s2.getRange(2,1,s2.getLastRow(),3).getValues(),则可以执行此操作
2,1,…
而不是
1,1,…
第1页和第2页都有来自另一个用户的手动输入,我希望第3页显示这两个数据集的组合-第3页中的下一行更新以显示第1页或第2页中的下一个用户输入HI如何在google应用程序脚本中编写?谢谢你是的,但我认为这没有什么好处,而且会是一件很麻烦的事情。您可以使用触发器
onEdit
,以便每次在sheet1或sheet2的最后两行中输入新值时,也会在sheet3中输入一个新值,该值引用手动输入的行。例如
[=Sheet2!A1,=Sheet2!B1,=Sheet2!C1]
。通过这种方式,您可以更新表1和表2中的值,更改将反映在表3中。但是,如果重要的是保持顺序,那么最好对sheet3进行排序,并将初始公式保留在
A1
函数onEdit(e){var sApp=SpreadsheetApp.getActiveSpreadsheet();var s1=sApp.getSheetByName(“Sheet1”);var s2=sApp.getSheetByName(“Sheet2”);var s3=sApp.getSheetByName(“sheet3”);var s1values=s1.getRange(1,1,s1.getLastRow(),3).getValues();var s2values=s2.getRange(1,1,s2.getLastRow(),3.getValues();s3values=s1values.concat(s2values);s3.getRange(1,1,s3values.length,3).setValues(s3values);}这似乎并没有在底部添加新的编辑值-它在上面添加了表1,并向下推送表2的值?我已经更新了我的答案,请检查它现在是否满足您的需要。
function combineSheets() {
  var sApp = SpreadsheetApp.getActiveSpreadsheet();
  var s1 = sApp.getSheetByName("Sheet1");
  var s2 = sApp.getSheetByName("Sheet2");
  var s3 = sApp.getSheetByName("Sheet3");

  var s1values = s1.getRange(1, 1, s1.getLastRow(), 3).getValues();
  var s2values = s2.getRange(1, 1, s2.getLastRow(), 3).getValues();

  s3values = s1values.concat(s2values);
  s3.getRange(1, 1, s3values.length, 3).setValues(s3values).sort(1)
}