javascript - 使用偏移函数附加行以填充数据以更正单元格
问题描述
我正在尝试从谷歌网络应用程序向/从谷歌表格填充和获取数据。到目前为止,它正在做它打算做的事情。但问题是我不想将数据放到最后一行;相反,我想将数据放入选定的行和列。
这是代码
代码.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:我确实在工作表中有模式列,我需要以相同的形式填充,只是想在完整工作表之前尝试几列。
解决方案
解释:
根据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);
推荐阅读
- android - 将android生成的文件保存在运行模拟器的电脑上
- ios13 - iOS13不支持后台更新通知?
- php - PHP preg_match 正则表达式重定向网址
- vim - 为什么 UltiSnips 列出的可用片段不起作用?
- r - 在不同系列的线性模型中循环多个变量组合的问题
- php - PHP 创建循环来处理未知数量的传入 POST 数据
- javascript - jQuery没有检测到点击表中的链接
- mysql - SQL - 查找并删除两列具有重复值的行
- reactjs - deck.gl 层和 react-map-gl 覆盖的鼠标/触摸事件问题
- pug - 在 pugjs 中使用包含时缩进如何工作?