我正在尝试获取有关如何根据单元格值将行移动(或复制)到另一工作簿的一些指导?

时间:2019-07-16 08:58:54

标签: google-apps-script google-sheets gsuite

我正在尝试使Google Apps中的流程自动化,该流程涉及将行数据从主表“ Prospects”中的行或复制(以较有效的过程为准)移动或复制到名为“ G1Targets”,“ G2Targets”的四个工作簿之一”,“ G3Targets”,“ G4Targets”基于“前景”工作表中的单元格值。

“潜在客户”表中的每一行在第4列中都有与之关联的推销员ID(G1,G2,G3,G4)。我希望能够将该行从“潜在客户”表中移动(或复制)到下一个空白处相关的G?Targets工作簿中的第一行。

我发现了很多代码片段,它们处理同一工作簿中的工作表之间的复制以及整个范围的复制,但是没有内容处理放置在下一个空白行中的单个行。

2 个答案:

答案 0 :(得分:0)

  

如果所有工作表都位于同一电子表格中,则可以使用方法moveTo(),从而可以使用一行   作为范围,条件语句决定要在哪张纸中复制   数据和getLastRow(),以了解将数据附加到何处。该代码将为您工作:

function moveRows() {
 var spreadsheet=SpreadsheetApp.openById('XXXXX');
 var mastersheet=spreadsheet.getSheetByName('Master');
 var G1=spreadsheet.getSheetByName('G1Targets');
 var G2=spreadsheet.getSheetByName('G2Targets');
 var G3=spreadsheet.getSheetByName('G3Targets');
 var G4=spreadsheet.getSheetByName('G4Targets');
 var counter=mastersheet.getLastRow();
 var lastColumn=mastersheet.getLastRow();
  var sheetName=mastersheet.getRange("A1:A").getValues();
  for (var i=1; i<=counter; i++)
  {   
    var range=mastersheet.getRange(i,2,1,lastColumn)
    if(sheetName[i-1][0]=="G1"||sheetName[i-1][0]=="G2"||sheetName[i-1][0]=="G3"||sheetName[i-1][0]=="G4"){
    if(sheetName[i-1][0]=="G1")
       {
         var target=G1;
       }
    else if(sheetName[i-1][0]=="G2")
      {
         var target=G2;
       }
    else if(sheetName[i-1][0]=="G3")
      {
         var target=G3;
       }                 
     else if(sheetName[i-1][0]=="G4")
      {
         var target=G4;
       }
    var lastRow=target.getLastRow();
    range.moveTo(target.getRange(lastRow+1,1,1,lastColumn-1));
    }  
  }  
}
  

如果您的工作表位于不同的电子表格中,则可以复制   行(例如getValues()setValues()),然后擦除   从主表中获取它们:

function setValues() {
 var mastersheet=SpreadsheetApp.openById('1ZmlLY4eHFS7eMsoqnyPPsmiW0EXth0KX7WJIWu-oiX8').getSheetByName('Master');
 var G1=SpreadsheetApp.openById('17C0SUTlMbx9WoSWluu8lM3gRBvSm7heDmlrW9jOgUF8').getSheetByName('G1Targets');
 var G2=SpreadsheetApp.openById('1ZmlLY4eHFS7eMsoqnyPPsmiW0EXth0KX7WJIWu-oiX8').getSheetByName('G2Targets');
 var G3=SpreadsheetApp.openById('1ZmlLY4eHFS7eMsoqnyPPsmiW0EXth0KX7WJIWu-oiX8').getSheetByName('G3Targets');
 var G4=SpreadsheetApp.openById('1ZmlLY4eHFS7eMsoqnyPPsmiW0EXth0KX7WJIWu-oiX8').getSheetByName('G4Targets');
 var counter=mastersheet.getLastRow();
 var lastColumn=mastersheet.getLastRow();
  var sheetName=mastersheet.getRange("A1:A").getValues();
  for (var i=1; i<=counter; i++)
  {   
    var range=mastersheet.getRange(i,2,1,lastColumn)
    if(sheetName[i-1][0]=="G1"||sheetName[i-1][0]=="G2"||sheetName[i-1][0]=="G3"||sheetName[i-1][0]=="G4"){
    if(sheetName[i-1][0]=="G1")
       {
         var target=G1;
       }
    else if(sheetName[i-1][0]=="G2")
      {
         var target=G2;
       }
    else if(sheetName[i-1][0]=="G3")
      {
         var target=G3;
       }                 
     else if(sheetName[i-1][0]=="G4")
      {
         var target=G4;
       }
    var lastRow=target.getLastRow();
    target.getRange(lastRow+1,1,1,lastColumn).setValues(range.getValues());
    range.clear();  
    }  
  }   

}

答案 1 :(得分:0)

非常感谢您。我已经使用电子表格ID和工作表名称对其进行了稍微调整。运行它时,出现以下错误-目标范围和源范围必须位于同一电子表格中。 (第31行,文件“ AssignNewProspects”)。这是调整后的代码

    function myFunction() {
 var mastersheet=SpreadsheetApp.openById('1UQCmsYZFhbgEc-kWTqnL_Acb1AI60ZKKExNaLKla7so').getSheetByName('New Targets');
 var DT=SpreadsheetApp.openById('1S54dKvh2crGyJeOBNeOhuE3mNU1HSwuipiYNabtNVLs').getSheetByName('Prospects_DT');
 var JM=SpreadsheetApp.openById('1h9hFJlmR752azA4PqkWq_DpKgKkjfvnFsd_7oDy1zw0').getSheetByName('Prospects_JM');
 var RC=SpreadsheetApp.openById('1txH9T9_Gqicp-ZIA27k-C9EyOYdDIyXcYcS7br_DMkM').getSheetByName('Prospects_RC');
 var PH=SpreadsheetApp.openById('1qbyKMg5extIyz-dAjoXLtUZM_oNfRHvD5Ncj-6JB_ks').getSheetByName('Prospects_PH');
 var counter=mastersheet.getLastRow();
 var lastColumn=mastersheet.getLastRow();
  var sheetName=mastersheet.getRange("A1:A").getValues();
  for (var i=1; i<=counter; i++)
  {   
    var range=mastersheet.getRange(i,2,1,lastColumn)
    if(sheetName[i-1][0]=="DT"||sheetName[i-1][0]=="JM"||sheetName[i-1][0]=="RC"||sheetName[i-1][0]=="PH"){
    if(sheetName[i-1][0]=="DT")
       {
         var target=DT;
       }
    else if(sheetName[i-1][0]=="JM")
      {
         var target=JM;
       }
    else if(sheetName[i-1][0]=="RC")
      {
         var target=RC;
       }                 
     else if(sheetName[i-1][0]=="PH")
      {
         var target=PH;
       }
    var lastRow=target.getLastRow();
    range.moveTo(target.getRange(lastRow+1,1,1,lastColumn-1));
    }  
  }  
}