首页 > 解决方案 > 每次保存新数据时,我都需要我的宏“保存”按钮添加一个新行,而不是替换之前保存的当前行

问题描述

我只需要我的宏来保存信息并将新行添加到同一工作簿中的另一个工作表,而不替换旧保存的数据,而是添加一个新行。

我对此很陌生,我需要专家的帮助,感谢所有愿意提供帮助的人。

    enter code here

function CopyandPaste() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('J3:N3').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Work Log Data'), true);
  spreadsheet.getRange('A3:E3').activate();
  spreadsheet.getRange('\'Customer Interface\'!J3:N3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};

我需要将从范围复制的所有数据复制J3:N3到工作表“客户界面”中,而不替换之前复制的信息,方法是每次单击“保存”按钮时添加一个新行。谢谢!!

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-macros

解决方案


我想这就是你想要的。但这很难说。宏可能很容易制作,但它们会制作文档记录不佳的脚本。

function CopyandPaste() {
  var ss = SpreadsheetApp.getActive();
  ss.getRange('J3:N3').activate();
  ss.setActiveSheet(ss.getSheetByName('Work Log Data'), true);
  ss.getRange('A3:E3').activate();
  ss.getRange('\'Customer Interface\'!J3:N3').copyTo(ss.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  var sh=ss.getSheetByName('Customer Interface');
  var rg=sh.getRange('J3:N3');
  var values=rg.getValues();
  sh.appendRow(values[0]);
}

OP编辑的版本:

function CopyandPaste() { 
  var ss = SpreadsheetApp.getActive(); 
  ss.getRange('J3:N3').activate(); 
  ss.setActiveSheet(ss.getSheetByName('Work Log Data'), true); 
  ss.getRange('A3:E3').activate(); 
  ss.getRange('\'Customer Interface\'!J3:N3').copyTo(ss.getActiveRange(), 
  SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); 
  var sh=ss.getSheetByName('Work Log Data'); 
  var rg=sh.getRange('A3:E3'); 
  var values=rg.getValues(); 
  sh.appendRow(values[0]); 
} 

在评论中回答您的问题:

function CopyandPaste() { 
  var ss = SpreadsheetApp.getActive(); 
  ss.getRange('J3:N3').activate(); 
  ss.setActiveSheet(ss.getSheetByName('Work Log Data'), true);
  ss.getRange('A3:E3').activate(); 

  //this copies from 'Customer Interface'!J3:N3 to 'Work Log Data'!A3:E3
  ss.getRange('\'Customer Interface\'!J3:N3').copyTo(ss.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);


  var sh=ss.getSheetByName('Work Log Data'); 
  var rg=sh.getRange('A3:E3'); 
  var values=rg.getValues(); 
  //this append 'Work Log Data'!A3:E3 to the bottom of the 'Work Log Data'
  sh.appendRow(values[0]);
}

推荐阅读