首页 > 解决方案 > 使用偏移函数附加行以填充数据以更正单元格

问题描述

我正在尝试从谷歌网络应用程序向/从谷歌表格填充和获取数据。到目前为止,它正在做它打算做的事情。但问题是我不想将数据放到最后一行;相反,我想将数据放入选定的行和列。

这是代码

代码.gs

function doGet(e){

 Logger.log(e.parameter);
 return HtmlService.createTemplateFromFile("form").evaluate();


}

function formSbmt(formInfo){
 var url = "https://docs.google.com/spreadsheets/d/1c4K-kkzxJPDiCYS4xcD2X7rKR8c_9pYqp9N4vtEEybE/edit#gid=0";
 var ss = SpreadsheetApp.openByUrl(url);
 var ws = ss.getSheetByName("Sheet1");

 ws.appendRow([null,null,formInfo.orderDate,null,null,formInfo.orderNo,formInfo.orderSrc]);

}

function include(filename){
 return HtmlService.createHtmlOutputFromFile(filename).getContent();


}

HTML

  <head>
    <base target="_top">
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
    <?!= include("page-css"); ?>
  </head>
  <body>
    <h2 class="center">Order Form</h2>
    <div class="fr">
    <label for="odate">Order Date</label>
    <input type="date"id="odate"></input>
    </div>
    <div class="fr">
      <label for="onum">Website Order</label>
      <input type="number"id="onum"></input>
    </div>
    <div class="fr">
      <label for="wsrc">Source</label>
      <select id="wsrc">
        <option>NAJ</option>
        <option>JAJ</option>
        <option>FJ</option>
      </select>
    </div>
    <div class="fr">
    <button id="btn">Submit</button>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
    <?!= include("page-js"); ?>
  </body>

我通过创建一个包含函数来分离 Javascript

脚本-js

<script>

      document.getElementById("btn").addEventListener("click",sclicked);

      function sclicked(){
        var formInfo = {};

         formInfo.orderDate = document.getElementById("odate").value;
         formInfo.orderNo = document.getElementById("onum").value;
         formInfo.orderSrc = document.getElementById("wsrc").value;


         google.script.run.formSbmt(formInfo);
         document.getElementById("odate").value = "";
         document.getElementById("onum").value = "";
         document.getElementById("wsrc").value = "";


      }
      
      
    </script>

问题是它正在最后一个可用行上填充数据。但我已经有一些数据以及第 0 1 列等等

我想将数据放在第 552 行和第 2、5 和 6 列,依此类推,但列的一些例外。

PS:我确实在工作表中有模式列,我需要以相同的形式填充,只是想在完整工作表之前尝试几列。

这是我的谷歌表 这是我的网络应用

床单

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


解释:

根据C列获取内容的最后一行,并从C列开始粘贴。

  • 这种方法假定列 C 之间没有空白单元格,并且值从单元格 C1 开始。

解决方案:

改变:

 ws.appendRow([null,null,formInfo.orderDate,null,null,formInfo.orderNo,formInfo.orderSrc]);

至:

 var cLength = ws.getRange("C1:C").getValues().filter(String).length;
 var data = [formInfo.orderDate,null,null,formInfo.orderNo,formInfo.orderSrc];
 ws.getRange(cLength+1,3,1,data.length).setValues(data);

推荐阅读