当前位置: 首页 > 知识库问答 >
问题:

谷歌脚本:从一张纸复制值到另一张纸,确定范围

相诚
2023-03-14

我在一列中有两个具有唯一ID的工作表。我需要确保每当在一张图纸(Sheet1)中添加新ID时,它都会复制到另一张图纸(Sheet2)中的最后一个空行。IMPORTRANGE将不会作为动态工作。在其他工作表中添加的任何静态信息都与相应的ID无关。

在另一个线程[1]中,我得到了开发这个脚本的帮助,它将完全做到这一点。但是,这个脚本将在列A中的另一个工作表中插入数据。我如何修改脚本,以便我可以决定我希望脚本插入数据的特定范围(在工作表2中)。

更新:我创建了这个电子表格作为示例。我试图确保脚本进行计算(即添加在第一个可用空行中没有重复的Vlaue),从“Sheet2”中的cel C10开始。如果我能在需要时以某种方式改变该范围,那也太好了:https://docs.google.com/spreadsheets/d/1abESAXFrOHoqRQRNqQGfmAFxlbD10wlprAf1tca4y7o/edit#gid=132361488

谢谢

js lang-js prettyprint-override">function updateSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = "Sheet1"; 
  var destinationSheet = "Sheet2";
  var source_sheet = ss.getSheetByName(sourceSheet);
  var target_sheet = ss.getSheetByName(destinationSheet);
  var lastCol = target_sheet.getLastColumn();
  var lastRow = target_sheet.getLastRow();
  if (lastRow > 1) { // <--- Added
    var r = target_sheet.getRange(2,1, lastRow - 1, lastCol);
    r.sort([{column: 1, ascending: true}]);
  }
  _updateSpreadsheet(source_sheet, target_sheet);
}

function _updateSpreadsheet(source_sheet, target_sheet) {
  var last_row = target_sheet.getLastRow();  
  var source_data = source_sheet.getRange("A4:A" + source_sheet.getLastRow()).getValues(); // <--- Modified
  var target_data = target_sheet.getDataRange().getValues();
  var resultArray = [];
  for (var n = 0 ; n < source_data.length ; n++) { // <--- Modified
    var keep = true;
      for(var p in target_data) {
       if (source_data[n][0] == target_data[p][0]) {
         keep = false; break;
       }
    }
    var columnsToKeep = [0];
    var tempData = [];
    if(keep){
      for(var c in columnsToKeep){ tempData.push(source_data[n][columnsToKeep[c]])}
      resultArray.push(tempData);
    }     
  }
  last_row++;
  resultArray = resultArray.filter(String);  // <--- Added
  if(resultArray.length>0){
    target_sheet.getRange(last_row,1,resultArray.length,resultArray[0].length).setValues(resultArray);
  }
}

[1]Google Script:将列中的新值追加到另一个工作表

共有1个答案

朱浩大
2023-03-14
target_sheet.getRange(last_row,1,resultArray.length,resultArray[0].length)
.setValues(resultArray);

这条线

  • 获取存储在变量target\u sheet
  • 访问定义的范围
  • 设置值

访问代码中使用的范围的语法是getRange(行、列、numRows、numColumns)

其中开始列是数字的-在您的例子中,它是1,对应于列A

如果要将起始列从A修改为B

只需将你的范围定义从

getRange(最后一行,1,resultArray.length,resultArray[0].length)

getRange(最后一行,2,resultArray.length,resultArray[0].length)

 类似资料:
  • 我试图写一个脚本,将信息从一张表复制到另一张表中的Google Sheets,作为每日更新。信息是按行显示的(例如。第5行有我想复制的所有信息,A列是输入的日期)如果条目上的日期(A列)与今天的日期不匹配,那么整行需要转移到另一张床单。 我无法将包含输入信息日期的单元格与今天的日期进行比较,然后捕获该单元格的行号,然后设置要复制的变量。 在新工作表上,它需要扫描下一个空行的范围,然后将信息粘贴到下

  • 我知道如果一列中有重复的值,如何应用条件格式,我知道如何使用公式引用多个工作表中的值;但是,如果值在另一个工作表中是重复的,我要做的是将格式应用于该值。 例如:我有“友谊”、“医疗”、“IT”和“营销”表,其中包含姓名和联系信息。电子邮件地址始终在E列中。 偶尔有人会从垂直领域,例如医疗保健领域,转移到友谊赛中。 当有人被添加到友谊赛工作表时,我希望他们在友谊赛工作表中的电子邮件单元格(E列)变为

  • 试图将一个范围从Sheet1复制到31张表上的相同范围,但仍然得到“运行时错误1004:工作表类的粘贴方法失败”,调试器指示是问题所在。我可以复制到一张单张没有问题,但不能复制到多张。我试着到处找,但不知道问题是什么(可能也很简单)。

  • 问题内容: 我需要在网络中模拟A4纸,并允许打印此页,因为它在浏览器(特别是Chrome)上显示。我将元素大小设置为21cm x 29.7cm,但是当我发送打印(或打印预览)时,它会裁剪页面。 我想我忘记了什么。但是会是什么呢? Chrome :剪贴页,双页( 这正是我需要的工作 ) Firefox :完美运行。 IE10 :信不信由你,这很完美! Opera :打印预览时非常容易出错 问题答案:

  • 使用GoogleApps脚本,我试图用一张工作表中的数据自动填充多张工作表。 我使用两个电子表格,“主”电子表格包含需要自动填充到另一个电子表格中的数据。 另一个电子表格包含模板表,根据“主”表中的条目数量,模板表被重复多次,这是数据需要去的地方。 到目前为止,我已经设法复制了基于主模板的工作表的数量,并在之后删除它们(见代码),但是我找不到任何关于如何自动填充这些工作表的信息。模板根据列中的公司

  • > 我正在尝试编写一个脚本,它将从一个工作表上的范围复制数据,并在B列的第一个空单元格中粘贴到另一个。我有一个脚本,可以将其粘贴到工作表中的第一个空单元格中这工作正常,但是我在列A中有一行静态的身份证号码,所以当它粘贴数据时,它就在工作表的下面。所以,我需要一种跳过列A并粘贴到列B中的第一个空单元格的方法。希望这有意义。 另一部分是B列中有时会有空单元格。所以它需要跳过这些来获得最后一个空单元格。