Google apps script 如何优化代码以将一个图纸范围复制到另一个图纸范围
我下面的代码可以工作,但我认为有一种更优雅的方式来完成它。我想将客户工作表(源)上所选行(D:R)的一部分复制到测试工作表(目标)中该工作表(C:Q)中的第一个空白行 代码可以工作,但看起来没有性能/不优雅Google apps script 如何优化代码以将一个图纸范围复制到另一个图纸范围,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我下面的代码可以工作,但我认为有一种更优雅的方式来完成它。我想将客户工作表(源)上所选行(D:R)的一部分复制到测试工作表(目标)中该工作表(C:Q)中的第一个空白行 代码可以工作,但看起来没有性能/不优雅 function rowSelected() { var customer_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Customer_Info"); var invoice_sheet = Sp
function rowSelected() {
var customer_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Customer_Info");
var invoice_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test");
var customer_selection_row = customer_sheet.getActiveRange().getRow();
//Browser.msgBox(customer_selection_row);
var customer_selection_start = 'D' + customer_selection_row;
var customer_selection_end = 'R' + customer_selection_row;
var customer_selection_range = customer_selection_start + ':' + customer_selection_end;
var source_range = customer_sheet.getRange(customer_selection_range);
customer_sheet.setActiveRange(source_range);
//Browser.msgBox(source_range.getA1Notation());
var invoice_selection_row = getFirstEmptyRowWholeRow();
var invoice_selection_start = 'C' + invoice_selection_row;
var invoice_selection_end = 'Q' + invoice_selection_row;
var invoice_selection_range = invoice_selection_start + ':' + invoice_selection_end;
var destination_range = invoice_sheet.getRange(invoice_selection_range);
invoice_sheet.setActiveRange(destination_range);
//Browser.msgBox(destination_range.getA1Notation());
customer_sheet.setActiveRange(source_range).copyTo((destination_range), {contentsOnly:true});
}
我认为有一种方法可以用更少的代码来实现这一点。- 您希望将工作表
客户信息
的活动范围行中的列“D”复制到“R”中,并将其复制到工作表
测试
的
检索到的行中的列“C”到“Q”GetFirstEmptyRowHolerow()
- 您要激活源范围
一次声明为“ss”SpreadsheetApp.getActiveSpreadsheet()
- 使用
代替getRange(行、列、numRows、numColumns)
getRange(a1表示法)
- 关于
,设置起始单元格时,可以从中复制源范围目的地范围
- 当活动工作表为
时,将运行脚本Customer\u Info
- 脚本的
也用于上述修改的脚本getFirstEmptyRowHolerow()
- 在此修改后的脚本中,如果要在工作表
上选择“A1:A3”的范围并运行脚本,则单元格“D1:R3”的值将从列“C”的单元格和Customer\u Info
GetFirstEmptyRowHolerow()的行中复制
如果我误解了你的问题,而这不是你想要的,我道歉。谢谢你的输入,我会测试它。@Alan W。谢谢你的回答。我很高兴你的问题解决了。
function rowSelected() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var customer_sheet = ss.getActiveSheet();
if (customer_sheet.getSheetName() == "Customer_Info") {
var invoice_sheet = ss.getSheetByName("Test");
var activeRange = ss.getActiveRange();
var source_range = customer_sheet.getRange(activeRange.getRow(), 4, activeRange.getNumRows(), 15).activate();
var destination_range = invoice_sheet.getRange(getFirstEmptyRowWholeRow(), 3); // or invoice_sheet.getRange("C" + getFirstEmptyRowWholeRow())
source_range.copyTo(destination_range, {contentsOnly: true});
}
}