【问题标题】:Google Sheets + Apps Scripts, Copy/Paste from one sheet to another, but Paste into first empty cell in specific column (B)Google Sheets + Apps Scripts,从一个工作表复制/粘贴到另一个工作表,但粘贴到特定列中的第一个空单元格(B)
【发布时间】:2021-02-10 07:14:01
【问题描述】:
  • 我正在尝试编写一个脚本,它将数据从一个工作表上的一个范围复制并粘贴到 B 列的第一个空单元格中的另一个。我有一个脚本可以将其粘贴到工作表的第一个空单元格中,并且效果很好,但是我在 A 列中有一个静态的 ID 行,所以当它粘贴数据时,它在工作表的下方。所以,我需要一种方法来跳过 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”确定的单元格中的值(数据)

  • 或者,如果有人对如何以不同的方式实现这一点有任何建议,我很想听听。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    解释:

    • 你很亲密。 getLastRowSpecial 函数确实获取了B 列的最后一行,并且它考虑了空白单元格。

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

      ts.getRange(lastRow+1,2,data.length,data[0].length).setValues(data);
      
    • 我在您的脚本中所做的另一项修改是,我没有采用完整的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;
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      相关资源
      最近更新 更多