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

谷歌工作表应用程序脚本,从一张工作表复制/粘贴到另一张工作表,但粘贴到特定列(B)的第一个空单元格中

云承天
2023-03-14

>

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

    另一部分是B列中有时会有空单元格。所以它需要跳过这些来获得最后一个空单元格。

    我找到了一个教程来获取最后一个空单元格,并使其工作正常,但不知道如何将其合并到粘贴数据的函数中。这是我到目前为止所拥有的:

    function myFunction() {
      var sss = SpreadsheetApp.openById('1dp5s8G9vFF5LzF5mAaY-JoySLGekh5UKHwt6jFcGOnA');
      var ss = sss.getSheetByName('Form'); 
      var range = ss.getRange('A8:H');
      var data = range.getValues();
     
         var tss = SpreadsheetApp.openById('1Vq_xX9cbC6OBAh1IRKsVKSPQvc5FEUFsJ2mlPzuFZ6o');
         var ts = tss.getSheetByName('Data');
         var columnToCheck = ts.getRange("B:B").getValues();
         var lastRow = getLastRowSpecial(columnToCheck);
      
      
         Logger.log(lastRow)
    };
     
    
    function getLastRowSpecial(range){
      var rowNum = 0;
      var blank = false;
      for(var row = 0; row < range.length; row++){
     
        if(range[row][0] === "" && !blank){
          rowNum = row;
          blank = true;
        }else if(range[row][0] !== ""){
          blank = false;
        };
      };
      return rowNum;
    };

    >

  • 所以基本上我需要一个函数,它将在由lastRow确定的单元格上设置值(数据)

    或者,如果有人对如何以不同的方式实现这一目标有任何建议,我很乐意听听。

  • 共有1个答案

    池俊茂
    2023-03-14

    >

    然后,您的目标是使用返回的值lastRow,并使用setVales从lastRow 1开始设置数据。

    ts.getRange(lastRow+1,2,data.length,data[0].length).setValues(data);
    

    我在脚本中所做的另一个修改是,我没有获取完整的数据范围,而是只获取最后一行内容。如果这不适用于您,则跳过该部分并使用您的解决方案。这是修改后的第一部分:

    var range = ss.getRange('A8:H'+ss.getLastRow());
    

    我只修改了myFunction

    function myFunction() {
      var sss = SpreadsheetApp.openById('1dp5s8G9vFF5LzF5mAaY-JoySLGekh5UKHwt6jFcGOnA');
      
      var ss = sss.getSheetByName('Form'); 
      var range = ss.getRange('A8:H'+ss.getLastRow()); // new code
      var data = range.getValues();
     
         var tss = SpreadsheetApp.openById('1Vq_xX9cbC6OBAh1IRKsVKSPQvc5FEUFsJ2mlPzuFZ6o');
         var ts = tss.getSheetByName('Data');
         var columnToCheck = ts.getRange("B:B").getValues();
         var lastRow = getLastRowSpecial(columnToCheck);
         
         ts.getRange(lastRow+1,2,data.length,data[0].length).setValues(data); // new code
    
    };
     
    function getLastRowSpecial(range){
      var rowNum = 0;
      var blank = false;
      for(var row = 0; row < range.length; row++){
     
        if(range[row][0] === "" && !blank){
          rowNum = row;
          blank = true;
        }else if(range[row][0] !== ""){
          blank = false;
        };
      };
      return rowNum;
    };
    
     类似资料:
    • 我有以下脚本: 这是我找到脚本的原始帖子:https://support.google.com/docs/forum/AAAABuH1jm0hR40qh02UWE/?hl=en 我想对代码做一些小的调整,但不知道从哪里开始。 目前,当在G列中输入“Y”时,它复制整行,并将行内容放在ORDERS!的最后一行!。 我想让它做的是: 1) 仅复制订单最后一行上的B、C和E列!2) 在中删除E和F中的值!

    • 我写了一个google脚本来创建和粘贴从一个单元格到另一个单元格的值(相同的电子表格)。该守则包括以下两个步骤: > (不工作):将相邻单元格的新值粘贴到第二张工作表中下一个空行(第1列)的单元格中。 下面的代码是我迄今为止尝试过的代码,但第二页上没有显示该值。有人知道我在下面的尝试中的问题在哪里吗? 谢谢你

    • 我写了下面的代码,并不断地看到。我试图克服这个问题,但似乎没有任何效果。我正试图从一个工作簿复制整个工作表,并将其粘贴到另一个工作簿中:

    • 我需要从一个工作簿复制棕褐色单元格并粘贴到另一个工作簿中。并且只需要在Excel中获取特定的单元格值。我实现了这一点,但只能粘贴到同一工作簿中的另一个工作表中。你能帮助我在粘贴数据到另一个工作簿上的一个特定的工作表,也应该粘贴的值在第二行,(即从第二行开始),因为第一行有标题在它。 源表标题: 项目阶段状态st Dt结束Dt预资源备注备注 Dest表标题: 现有代码:

    • 我想复制主控表最后一行的数据,该主控表使用google表单填充,并将其粘贴到提交表单时创建的新表单中。现在,我希望新工作表自动将某些文本放入特定单元格,并将最后一行的数据复制到某些特定单元格中。示例-:母版图纸 现在我想将单元格b2中的数据(假设2是最后一行)从单元格c2复制到单元格b1中新创建的工作表中,从单元格c2复制到单元格b3,从单元格d2复制到单元格b4,从单元格AL2复制到单元格h20