Google表格 - 应用脚本 - 根据匹配ID单独删除标题删除行

时间:2016-01-28 07:44:57

标签: google-apps-script google-sheets

接近在线销售订单系统的最终调整。

Google Example Sheet - OSOSO

我正在尝试从'订单'中删除/删除订单项“运送”中的表格片材。

我创建了一个ID列,以便每个订单项都输入到'订单'工作表将具有唯一的ID,此唯一ID通过装箱单系统传送到“运输”中。片材。

我想从'订单'中删除/删除这些订单项。表格一旦转移到“运送”表格中。片。

因为我是编码的新手,所以我遇到了一些麻烦。

以下是我一直在调整用于上述目的的脚本:

<!doctype html>
<html>
<head>
<meta charset="iso-8859-1">
<title>Align Fieldset</title>
<style>
.header{
    width: 100%;
    clear:both;
    display: inline-block;
    font-size: medium;
    float:left;
}
.subheader{
    width: 100%;
    clear:both;
    display: inline-block;
    font-size: medium;
    float:left;
}
.list{
    list-style-type: none;
    display: inline-block;
    width: auto;
    float: left;
}
</style>
</head>

<body>

<p>Aligning offer & Demand on the same line</p>
<fieldset  class="header">

<legend>Type</legend>
<ul class= "list">
 <li>
 <fieldset class="subheader">   
  <legend ><label> 
  <input type="radio" name="Type" value="Offer" checked="checked"
  />Offer</label>
  </legend>
 </fieldset>  
  </li>   
  <li>
  <fieldset class="subheader">   
      <legend><label> 
           <input type="radio" name="Type" value="Demand">Demand</label>
      </legend> 
  </fieldset>
  </li>
  </ul>
  </fieldset> <!-- End of type -->
</body>
</html>

我遇到的问题;

它删除了&#39;订单&#39;上的任何格式。片。

如果匹配&#39; SHIPPED&#39;它会删除第1行(标题)。片材。

感谢您提供的任何帮助和指导。

中号

1 个答案:

答案 0 :(得分:2)

首先,我想识别重复的行ID并将它们保存在一个数组中。稍后循环遍历它们并逐个删除。确保在删除行时更改行数。为了捕获我使用rowsDeleted变量。希望这很清楚。

function deleteRowInOrders()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var shipped = ss.getSheetByName("SHIPPED");
  var orders = ss.getSheetByName("Orders");

  var shipVal = shipped.getDataRange().getValues();
  var orderVal = orders.getDataRange().getValues();
  var rowIDs = [];
  for(var n in orderVal ){
    for(var p in shipVal){ 
      if( orderVal[n][0] == shipVal[p][0]){
        rowIDs.push(n);
      }
    }
  }
  var rowsDeleted = 0 ;

  for(var row in rowIDs)
  {
   var deleteRowID = parseInt(rowIDs[row])+1 - rowsDeleted;
   if(deleteRowID>1) // without header row
   {
     orders.deleteRow(deleteRowID);
     rowsDeleted++;
   }
  }
}