2014-09-19 124 views
1

我正在尝试使用2张工作表制作Google电子表格。 link 第1片“命令”是我下订单和当我按下“保存”按钮,我要更新的“数据”片材,BU插入到它(在结束时)以下在Google电子表格中将特定单元格复制到另一个工作表的脚本

顺序数量,日期,数量,描述和价格。

订单号和日期是相同的每个产品。

我写这个剧本是:

function saveData() { 
    var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('order');    
    var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('data');    
    var lastRow = sheet2.getLastRow()+1; 


    if (sheet1.getRange('B6') != " ") 
     sheet1.getRange('a2').copyTo(sheet2.getRange(lastRow,1), {contentsOnly:true}); 
     sheet1.getRange('b2').copyTo(sheet2.getRange(lastRow,2), {contentsOnly:true}); 
     sheet1.getRange('b6').copyTo(sheet2.getRange(lastRow,3), {contentsOnly:true}); 
     sheet1.getRange('c6').copyTo(sheet2.getRange(lastRow,4), {contentsOnly:true}); 

    if (sheet1.getRange('B7') != " ") 
     sheet1.getRange('a2').copyTo(sheet2.getRange(lastRow+1,1), {contentsOnly:true}); 
     sheet1.getRange('b2').copyTo(sheet2.getRange(lastRow+1,2), {contentsOnly:true}); 
     sheet1.getRange('b7').copyTo(sheet2.getRange(lastRow+1,3), {contentsOnly:true}); 
     sheet1.getRange('c7').copyTo(sheet2.getRange(lastRow+1,4), {contentsOnly:true}); 

    if (sheet1.getRange('B8') != " ") 
     sheet1.getRange('a2').copyTo(sheet2.getRange(lastRow+2,1), {contentsOnly:true}); 
     sheet1.getRange('b2').copyTo(sheet2.getRange(lastRow+2,2), {contentsOnly:true}); 
     sheet1.getRange('b8').copyTo(sheet2.getRange(lastRow+2,3), {contentsOnly:true}); 
     sheet1.getRange('c8').copyTo(sheet2.getRange(lastRow+2,4), {contentsOnly:true}); 

} 

我的问题是,即使项目2和3是空的,在“数据”表我仍然获得订单号和日期。 有没有更好的方法来做到这一点?

+1

为了任何人谁编辑的脚本,谢谢。它效果很好。 – Yannis 2014-09-19 15:16:30

回答

1

你已经忘记了几件事情:

  1. getRange()没有得到你什么,你可以直接使用;这是该范围的本地代理,可以这么说。要获取包含的数据,您需要使用.get Range()。getValue()以获取范围中左上角单元格的内容。
  2. 您的如果块不是块!您需要将所有语句与括号一起组合在一起。
  3. 你不能确定一个空单元格将是!=“”!但是,我认为,getValue()本身是'nullish'足够你的目的。 getValue()。length> 0也可以。

如果您使用递增计数器,则还可以避免“数据”中的空行。

所以,你的代码看起来是这样的:

cntr = 0 
if (sheet1.getRange('B6').getValue()) { 
    sheet1.getRange('a2').copyTo(sheet2.getRange(lastRow + cntr,1), {contentsOnly:true}); 
    sheet1.getRange('b2').copyTo(sheet2.getRange(lastRow + cntr,2), {contentsOnly:true}); 
    sheet1.getRange('b6').copyTo(sheet2.getRange(lastRow + cntr,3), {contentsOnly:true}); 
    sheet1.getRange('c6').copyTo(sheet2.getRange(lastRow + cntr,4), {contentsOnly:true}); 
    cntr++; 
} 
/* next row */ 
if (. . . ) { 
    etc. 
    etc. 
    cntr++; 
} 
相关问题