我正在尝试使Google Apps中的流程自动化,该流程涉及将行数据从主表“ Prospects”中的行或复制(以较有效的过程为准)移动或复制到名为“ G1Targets”,“ G2Targets”的四个工作簿之一”,“ G3Targets”,“ G4Targets”基于“前景”工作表中的单元格值。
“潜在客户”表中的每一行在第4列中都有与之关联的推销员ID(G1,G2,G3,G4)。我希望能够将该行从“潜在客户”表中移动(或复制)到下一个空白处相关的G?Targets工作簿中的第一行。
我发现了很多代码片段,它们处理同一工作簿中的工作表之间的复制以及整个范围的复制,但是没有内容处理放置在下一个空白行中的单个行。
答案 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));
}
}
}