【问题标题】:Speeding up Google Sheets GetRange - CopyTo Macro加快 Google 表格 GetRange - CopyTo 宏
【发布时间】:2022-11-09 00:48:44
【问题描述】:

首先,我在任何与编码相关的话题上都像超级新手,所以我认为所有的批评都是有道理的。 我创建了一个 Google 表格,它可以计算生产成本并生成看起来不错的报价以发送出去。为了记录每个报价,我编写了一个宏,它在特定工作表上创建一个新行并将所有变量(准确地说是 231)从报价复制到这个新行。问题是运行这个宏通常需要大约 2-3 分钟,这非常慢。怎么做才能加快速度?

/** @OnlyCurrentDoc */


function RecordTest() {

  var spreadsheet = SpreadsheetApp.getActive();
 var Captured = spreadsheet.getSheetByName("Captured data");


// General from quote sheet

  spreadsheet.getSheetByName("Captured data").insertRowsBefore(spreadsheet.getRange('\'Captured Data\'!6:6').getRow(), 1);
  spreadsheet.getRange('\'Captured Data\'!C6').setFormula('=C7+1');

  spreadsheet.getRange('\'Quote generator\'!F10').copyTo(spreadsheet.getRange('\'Captured Data\'!D6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Quote number
  spreadsheet.getRange('\'Quote generator\'!C10').copyTo(spreadsheet.getRange('\'Captured Data\'!E6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Quote Date
  spreadsheet.getRange('\'Quote generator\'!B13').copyTo(spreadsheet.getRange('\'Captured Data\'!F6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Customer 
  spreadsheet.getRange('\'Quote generator\'!G45').copyTo(spreadsheet.getRange('\'Captured Data\'!G6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Total
  spreadsheet.getRange('\'Quote generator\'!B20').copyTo(spreadsheet.getRange('\'Captured Data\'!H6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Contact person
  spreadsheet.getRange('\'Quote generator\'!J38').copyTo(spreadsheet.getRange('\'Captured Data\'!X6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Comment
  
//Include services 1-3
 spreadsheet.getRange('\'Quote generator\'!J27').copyTo(spreadsheet.getRange('\'Captured Data\'!IA6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Include service 1
 spreadsheet.getRange('\'Quote generator\'!J28').copyTo(spreadsheet.getRange('\'Captured Data\'!IB6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Include service 2
 spreadsheet.getRange('\'Quote generator\'!J29').copyTo(spreadsheet.getRange('\'Captured Data\'!IC6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Include service 3


  spreadsheet.getRange('\'Quote generator\'!B37:C37').copyTo(spreadsheet.getRange('\'Captured Data\'!I6:J6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Service no1 and description
  spreadsheet.getRange('\'Quote generator\'!E37:G37').copyTo(spreadsheet.getRange('\'Captured Data\'!K6:M6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //QTY, unit price and total
  spreadsheet.getRange('\'Quote generator\'!B38:C38').copyTo(spreadsheet.getRange('\'Captured Data\'!N6:O6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Service no1 and description
  spreadsheet.getRange('\'Quote generator\'!E38:G38').copyTo(spreadsheet.getRange('\'Captured Data\'!P6:R6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //QTY, unit price and total
  spreadsheet.getRange('\'Quote generator\'!B39:C39').copyTo(spreadsheet.getRange('\'Captured Data\'!S6:T6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Service no1 and description
  spreadsheet.getRange('\'Quote generator\'!E39:G39').copyTo(spreadsheet.getRange('\'Captured Data\'!U6:W6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //QTY, unit price and total

  spreadsheet.getRange('\'Quote generator\'!J17').copyTo(spreadsheet.getRange('\'Captured Data\'!Y6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);  //Include PN 1 
  spreadsheet.getRange('\'Quote generator\'!J18').copyTo(spreadsheet.getRange('\'Captured Data\'!Z6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);  //Include PN 2
  spreadsheet.getRange('\'Quote generator\'!J19').copyTo(spreadsheet.getRange('\'Captured Data\'!AA6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Include PN 3 
  spreadsheet.getRange('\'Quote generator\'!J20').copyTo(spreadsheet.getRange('\'Captured Data\'!AB6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Include PN 4 
  spreadsheet.getRange('\'Quote generator\'!J21').copyTo(spreadsheet.getRange('\'Captured Data\'!AC6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Include PN 5 
  spreadsheet.getRange('\'Quote generator\'!J22').copyTo(spreadsheet.getRange('\'Captured Data\'!AD6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //Include PN 6 

 //Part 1

  spreadsheet.getRange('\'Part 1\'!C7').copyTo(spreadsheet.getRange('\'Captured Data\'!AE6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C8').copyTo(spreadsheet.getRange('\'Captured Data\'!AF6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C4').copyTo(spreadsheet.getRange('\'Captured Data\'!AG6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C5').copyTo(spreadsheet.getRange('\'Captured Data\'!AH6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C11').copyTo(spreadsheet.getRange('\'Captured Data\'!AI6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C12').copyTo(spreadsheet.getRange('\'Captured Data\'!AJ6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C13:D13').copyTo(spreadsheet.getRange('\'Captured Data\'!AK6:AL6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!D14').copyTo(spreadsheet.getRange('\'Captured Data\'!AM6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C15:D15').copyTo(spreadsheet.getRange('\'Captured Data\'!AN6:AO6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C16').copyTo(spreadsheet.getRange('\'Captured Data\'!AP6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!D17').copyTo(spreadsheet.getRange('\'Captured Data\'!AQ6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C23').copyTo(spreadsheet.getRange('\'Captured Data\'!AR6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!D24').copyTo(spreadsheet.getRange('\'Captured Data\'!AS6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C30').copyTo(spreadsheet.getRange('\'Captured Data\'!AT6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C31').copyTo(spreadsheet.getRange('\'Captured Data\'!AU6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C32').copyTo(spreadsheet.getRange('\'Captured Data\'!AV6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C33').copyTo(spreadsheet.getRange('\'Captured Data\'!AW6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C34:D34').copyTo(spreadsheet.getRange('\'Captured Data\'!AX6:AY6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C35').copyTo(spreadsheet.getRange('\'Captured Data\'!AZ6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C36').copyTo(spreadsheet.getRange('\'Captured Data\'!BA6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C37').copyTo(spreadsheet.getRange('\'Captured Data\'!BB6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C38').copyTo(spreadsheet.getRange('\'Captured Data\'!BC6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C45').copyTo(spreadsheet.getRange('\'Captured Data\'!BD6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C46').copyTo(spreadsheet.getRange('\'Captured Data\'!BE6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!C47').copyTo(spreadsheet.getRange('\'Captured Data\'!BF6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!H3').copyTo(spreadsheet.getRange('\'Captured Data\'!BG6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!H4').copyTo(spreadsheet.getRange('\'Captured Data\'!BH6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!H5').copyTo(spreadsheet.getRange('\'Captured Data\'!BI6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!H7').copyTo(spreadsheet.getRange('\'Captured Data\'!BJ6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!H8').copyTo(spreadsheet.getRange('\'Captured Data\'!BK6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('\'Part 1\'!H9').copyTo(spreadsheet.getRange('\'Captured Data\'!BL6'),SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);


 
 //Part 2

spreadsheet.getRange('\'Part 2\'!C7').copyTo(spreadsheet.getRange('\'Captured Data\'!BM6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C8').copyTo(spreadsheet.getRange('\'Captured Data\'!BN6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C4').copyTo(spreadsheet.getRange('\'Captured Data\'!BO6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C5').copyTo(spreadsheet.getRange('\'Captured Data\'!BP6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C11').copyTo(spreadsheet.getRange('\'Captured Data\'!BQ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C12').copyTo(spreadsheet.getRange('\'Captured Data\'!BR6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C13:D13').copyTo(spreadsheet.getRange('\'Captured Data\'!BS6:BT6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!D14').copyTo(spreadsheet.getRange('\'Captured Data\'!BU6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C15:D15').copyTo(spreadsheet.getRange('\'Captured Data\'!BV6:BW6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C16').copyTo(spreadsheet.getRange('\'Captured Data\'!BX6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!D17').copyTo(spreadsheet.getRange('\'Captured Data\'!BY6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C23').copyTo(spreadsheet.getRange('\'Captured Data\'!BZ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!D24').copyTo(spreadsheet.getRange('\'Captured Data\'!CA6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C30').copyTo(spreadsheet.getRange('\'Captured Data\'!CB6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C31').copyTo(spreadsheet.getRange('\'Captured Data\'!CC6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C32').copyTo(spreadsheet.getRange('\'Captured Data\'!CD6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C33').copyTo(spreadsheet.getRange('\'Captured Data\'!CE6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C34:D34').copyTo(spreadsheet.getRange('\'Captured Data\'!CF6:CG6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C35').copyTo(spreadsheet.getRange('\'Captured Data\'!CH6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C36').copyTo(spreadsheet.getRange('\'Captured Data\'!CI6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C37').copyTo(spreadsheet.getRange('\'Captured Data\'!CJ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C38').copyTo(spreadsheet.getRange('\'Captured Data\'!CK6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C45').copyTo(spreadsheet.getRange('\'Captured Data\'!CL6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C46').copyTo(spreadsheet.getRange('\'Captured Data\'!CM6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!C47').copyTo(spreadsheet.getRange('\'Captured Data\'!CN6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!H3').copyTo(spreadsheet.getRange('\'Captured Data\'!CO6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!H4').copyTo(spreadsheet.getRange('\'Captured Data\'!CP6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!H5').copyTo(spreadsheet.getRange('\'Captured Data\'!CQ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!H7').copyTo(spreadsheet.getRange('\'Captured Data\'!CR6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!H8').copyTo(spreadsheet.getRange('\'Captured Data\'!CS6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 2\'!H9').copyTo(spreadsheet.getRange('\'Captured Data\'!CT6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

//Part3

spreadsheet.getRange('\'Part 3\'!C7').copyTo(spreadsheet.getRange('\'Captured Data\'!CU6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C8').copyTo(spreadsheet.getRange('\'Captured Data\'!CV6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C4').copyTo(spreadsheet.getRange('\'Captured Data\'!CW6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C5').copyTo(spreadsheet.getRange('\'Captured Data\'!CX6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C11').copyTo(spreadsheet.getRange('\'Captured Data\'!CY6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C12').copyTo(spreadsheet.getRange('\'Captured Data\'!CZ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C13:D13').copyTo(spreadsheet.getRange('\'Captured Data\'!DA6:DB6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!D14').copyTo(spreadsheet.getRange('\'Captured Data\'!DC6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C15:D15').copyTo(spreadsheet.getRange('\'Captured Data\'!DD6:DE6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C16').copyTo(spreadsheet.getRange('\'Captured Data\'!DF6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!D17').copyTo(spreadsheet.getRange('\'Captured Data\'!DG6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C23').copyTo(spreadsheet.getRange('\'Captured Data\'!DH6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!D24').copyTo(spreadsheet.getRange('\'Captured Data\'!DI6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C30').copyTo(spreadsheet.getRange('\'Captured Data\'!DJ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C31').copyTo(spreadsheet.getRange('\'Captured Data\'!DK6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C32').copyTo(spreadsheet.getRange('\'Captured Data\'!DL6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C33').copyTo(spreadsheet.getRange('\'Captured Data\'!DM6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C34:D34').copyTo(spreadsheet.getRange('\'Captured Data\'!DN6:DO6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C35').copyTo(spreadsheet.getRange('\'Captured Data\'!DP6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C36').copyTo(spreadsheet.getRange('\'Captured Data\'!DQ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C37').copyTo(spreadsheet.getRange('\'Captured Data\'!DR6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C38').copyTo(spreadsheet.getRange('\'Captured Data\'!DS6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C45').copyTo(spreadsheet.getRange('\'Captured Data\'!DT6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C46').copyTo(spreadsheet.getRange('\'Captured Data\'!DU6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!C47').copyTo(spreadsheet.getRange('\'Captured Data\'!DV6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!H3').copyTo(spreadsheet.getRange('\'Captured Data\'!DW6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!H4').copyTo(spreadsheet.getRange('\'Captured Data\'!DX6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!H5').copyTo(spreadsheet.getRange('\'Captured Data\'!DY6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!H7').copyTo(spreadsheet.getRange('\'Captured Data\'!DZ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!H8').copyTo(spreadsheet.getRange('\'Captured Data\'!EA6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 3\'!H9').copyTo(spreadsheet.getRange('\'Captured Data\'!EB6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

//Part 4

spreadsheet.getRange('\'Part 4\'!C7').copyTo(spreadsheet.getRange('\'Captured Data\'!EC6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C8').copyTo(spreadsheet.getRange('\'Captured Data\'!ED6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C4').copyTo(spreadsheet.getRange('\'Captured Data\'!EE6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C5').copyTo(spreadsheet.getRange('\'Captured Data\'!EF6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C11').copyTo(spreadsheet.getRange('\'Captured Data\'!EG6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C12').copyTo(spreadsheet.getRange('\'Captured Data\'!EH6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C13:D13').copyTo(spreadsheet.getRange('\'Captured Data\'!EI6:EJ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!D14').copyTo(spreadsheet.getRange('\'Captured Data\'!EK6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C15:D15').copyTo(spreadsheet.getRange('\'Captured Data\'!EL6:EM6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C16').copyTo(spreadsheet.getRange('\'Captured Data\'!EN6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!D17').copyTo(spreadsheet.getRange('\'Captured Data\'!EO6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C23').copyTo(spreadsheet.getRange('\'Captured Data\'!EP6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!D24').copyTo(spreadsheet.getRange('\'Captured Data\'!EQ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C30').copyTo(spreadsheet.getRange('\'Captured Data\'!ER6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C31').copyTo(spreadsheet.getRange('\'Captured Data\'!ES6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C32').copyTo(spreadsheet.getRange('\'Captured Data\'!ET6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C33').copyTo(spreadsheet.getRange('\'Captured Data\'!EU6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C34:D34').copyTo(spreadsheet.getRange('\'Captured Data\'!EV6:EW6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C35').copyTo(spreadsheet.getRange('\'Captured Data\'!EX6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C36').copyTo(spreadsheet.getRange('\'Captured Data\'!EY6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C37').copyTo(spreadsheet.getRange('\'Captured Data\'!EZ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C38').copyTo(spreadsheet.getRange('\'Captured Data\'!FA6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C45').copyTo(spreadsheet.getRange('\'Captured Data\'!FB6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C46').copyTo(spreadsheet.getRange('\'Captured Data\'!FC6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!C47').copyTo(spreadsheet.getRange('\'Captured Data\'!FD6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!H3').copyTo(spreadsheet.getRange('\'Captured Data\'!FE6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!H4').copyTo(spreadsheet.getRange('\'Captured Data\'!FF6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!H5').copyTo(spreadsheet.getRange('\'Captured Data\'!FG6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!H7').copyTo(spreadsheet.getRange('\'Captured Data\'!FH6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!H8').copyTo(spreadsheet.getRange('\'Captured Data\'!FI6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 4\'!H9').copyTo(spreadsheet.getRange('\'Captured Data\'!FJ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

//Part 5

spreadsheet.getRange('\'Part 5\'!C7').copyTo(spreadsheet.getRange('\'Captured Data\'!FK6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C8').copyTo(spreadsheet.getRange('\'Captured Data\'!FL6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C4').copyTo(spreadsheet.getRange('\'Captured Data\'!FM6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C5').copyTo(spreadsheet.getRange('\'Captured Data\'!FN6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C11').copyTo(spreadsheet.getRange('\'Captured Data\'!FO6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C12').copyTo(spreadsheet.getRange('\'Captured Data\'!FP6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C13:D13').copyTo(spreadsheet.getRange('\'Captured Data\'!FQ6:FR6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!D14').copyTo(spreadsheet.getRange('\'Captured Data\'!FS6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C15:D15').copyTo(spreadsheet.getRange('\'Captured Data\'!FT6:FU6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C16').copyTo(spreadsheet.getRange('\'Captured Data\'!FV6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!D17').copyTo(spreadsheet.getRange('\'Captured Data\'!FW6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C23').copyTo(spreadsheet.getRange('\'Captured Data\'!FX6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!D24').copyTo(spreadsheet.getRange('\'Captured Data\'!FY6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C30').copyTo(spreadsheet.getRange('\'Captured Data\'!FZ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C31').copyTo(spreadsheet.getRange('\'Captured Data\'!GA6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C32').copyTo(spreadsheet.getRange('\'Captured Data\'!GB6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C33').copyTo(spreadsheet.getRange('\'Captured Data\'!GC6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C34:D34').copyTo(spreadsheet.getRange('\'Captured Data\'!GD6:GE6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C35').copyTo(spreadsheet.getRange('\'Captured Data\'!GF6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C36').copyTo(spreadsheet.getRange('\'Captured Data\'!GG6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C37').copyTo(spreadsheet.getRange('\'Captured Data\'!GH6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C38').copyTo(spreadsheet.getRange('\'Captured Data\'!GI6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C45').copyTo(spreadsheet.getRange('\'Captured Data\'!GJ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C46').copyTo(spreadsheet.getRange('\'Captured Data\'!GK6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!C47').copyTo(spreadsheet.getRange('\'Captured Data\'!GL6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!H3').copyTo(spreadsheet.getRange('\'Captured Data\'!GM6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!H4').copyTo(spreadsheet.getRange('\'Captured Data\'!GN6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!H5').copyTo(spreadsheet.getRange('\'Captured Data\'!GO6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!H7').copyTo(spreadsheet.getRange('\'Captured Data\'!GP6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!H8').copyTo(spreadsheet.getRange('\'Captured Data\'!GQ6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('\'Part 5\'!H9').copyTo(spreadsheet.getRange('\'Captured Data\'!GR6'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);


  };

【问题讨论】:

  • 关于The problem is that running this macro takes usually around 2-3 minutes,当我测试你的展示脚本时,处理时间大约是3秒。所以,我担心您可能错误地复制了您的脚本,或者您的实际电子表格可能很大,或者出于其他原因。为了正确理解您当前的问题,您能否提供更多信息来帮助您理解当前的问题?
  • 我编辑了我最初的问题以包含大部分 80% 的代码。也许这会有所帮助。
  • 感谢您回复和更新您的问题。现在,我注意到已经发布了答案。在这种情况下,我想尊重现有的答案。

标签: google-apps-script google-sheets


【解决方案1】:

问题:

您可以采取多种措施来提高效率:

  • 不是每次您想使用对象时都检索它(例如,要获取您的工作表,您使用getSheetByName 并通过getRange('SheetName'!RangeNotation) 多次),将对象存储在一个变量中(在工作表的情况下,例如Captured) 并从那时起使用它。
  • 由于您只是从范围中复制值,您可以使用getValuessetValues 来复制数据,而不是copyTo。这将允许您一次获取所有工作表值并在脚本中处理它们,从而减少调用工作表服务的次数。调用这种服务会减慢脚本的速度,因此任何减少调用量的修改都会减少执行时间。见Minimize calls to other services
  • 此外,只要您要发布数据的单元格彼此连续,您就应该尝试一次将所有这些单元格放在一个范围内,如下面的D6:H6 示例所示。这也将最大限度地减少对表格的调用。

代码示例:

function RecordTest() {
  var spreadsheet = SpreadsheetApp.getActive();
  var Captured = spreadsheet.getSheetByName("Captured data");
  Captured.insertRowsBefore(6, 1);
  Captured.getRange('C6').setFormula('=C7+1');
  var QuoteGenerator = spreadsheet.getSheetByName("Quote generator");
  var sourceData = QuoteGenerator.getDataRange().getValues();
  var f10 = sourceData[9][5];
  var c10 = sourceData[9][2];
  var b13 = sourceData[12][1];
  var g45 = sourceData[44][6];
  var b20 = sourceData[19][1];
  var j38 = sourceData[37][9];
  Captured.getRange('D6:H6').setValues([[f10,c10,b13,g45,b20]]);
  Captured.getRange('X6').setValue(j38);
  // ...
}

笔记:

  • 我刚刚添加了与您的原始脚本相对应的部分,但您的其余代码应该很容易适应此工作流程。
  • 我建议你看看Best Practices

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多