Google sheets 将特定单元格复制到Google电子表格中的其他工作表的脚本

Google sheets 将特定单元格复制到Google电子表格中的其他工作表的脚本,google-sheets,Google Sheets,我正在尝试用两张纸制作一个谷歌电子表格。 第一张表格“订单”是我下订单的地方,当我按下“保存”按钮时,我想更新“数据”表格,但在其(末尾)插入以下内容 订单号、日期、编号、说明和价格 每个产品的订单号和日期相同 我为此编写的脚本是: function saveData() { var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('order'); var sheet2 = Spre

我正在尝试用两张纸制作一个谷歌电子表格。 第一张表格“订单”是我下订单的地方,当我按下“保存”按钮时,我想更新“数据”表格,但在其(末尾)插入以下内容

订单号、日期、编号、说明和价格

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

我为此编写的脚本是:

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项为空,在“数据”表中,我仍然会得到订单号和日期。
有更好的方法吗?

您忘记了几件事:

  • getRange()无法获得任何可以直接使用的内容;可以说,它是范围的本地代理。要获取包含的数据,需要使用.get Range().getValue()获取范围中左上角单元格的内容
  • 你的if块不是块!您需要用括号将所有语句组合在一起
  • 您无法确定空单元格是否为空!=" "! 但是,我认为getValue()本身就足以满足您的需要。getValue()。长度>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++;
    }
    

    任何编辑剧本的人,谢谢。它工作得很好。