我正在开发一种工具,可以让我的公司跟踪其金融投资。
我需要创建一个简单的数据输入表单供用户输入交易数据,然后填充主表,这是该工具分析的基础。我不能通过Google表单执行此操作,因为数据输入表单使用了大量基于表单中其他数据的条件格式。
我上传了一张非常简化的表格来说明我需要的内容:this
我要找的是一个脚本,点击Submit
表单中的Data Entry
后,将 B12:E12 中的值(不是公式)复制到"主表"中的第一个空行(在本例中为第8行)片。理想情况下,点击"提交"还将清除"数据输入"中的 C4:C7 中的数据输入字段。片材。
我已经浏览了各种论坛以寻求解决方案,但没有找到任何确切的解决方案。我很遗憾地说我是Google Apps脚本的新手,因此我无法编写自己的代码进行分享,在此处提问时,我知道这是习惯性的。
如果有人能指出我正确的方向,我将不胜感激。我目前正在尝试使用在线资源学习JavaScript
和Google Apps Script
,但对于这个特定项目,我需要很长时间才能达到可以帮助自己的水平。
答案 0 :(得分:1)
非常感谢,GEOWill!
您的回答解决了我的问题,感谢您的评论,我能够准确理解您的代码所做的事情。我只更改了代码以删除菜单(但非常感谢你向我展示了如何完成) - 我将函数绑定到作为绘图插入的Submit按钮。我还添加了一些代码,以便在单击按钮后清除条目范围的内容(这是其他人建议的)。
我使用的最终代码是:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var entry_sheet = ss.getSheetByName("Data Entry");
var master_sheet = ss.getSheetByName("Master Table");
function mySubmit() {
var entry_range = entry_sheet.getRange("B12:E12")
var val = entry_sheet.getRange("B12:E12").getDisplayValues().reduce(function (a, b) {
return a.concat(b);
});
Logger.log(val);
master_sheet.appendRow(val);
entry_sheet.getRange("C4:C7").clearContent()
}
我希望这可以帮助其他人遇到类似的问题!喜欢这个社区的支持。谢谢你的帮忙。
答案 1 :(得分:0)
我首先使用菜单功能来运行你的代码(而不是单元格按钮)。您可以使用单元格按钮,但我相信您需要插入图像并为该图像指定javascript函数。
基本上,您首先要使用工具,脚本编辑器。创建一个onOpen函数并创建一个触发器,每次打开电子表格时都会运行onOpen()函数。在onOpen()函数中,我们创建了一个菜单,其中存在一个物理菜单项(一种按钮)(称为“提交”)。最后,我们将一个函数与此按钮相关联(我称之为mySubmit())。
mySubmit()函数内部存在您要查找的大多数功能。此时,只需从一个细胞范围复制并将它们粘贴到另一个细胞范围即可。为此,您会注意到我必须提前设置一些变量(ss,entry_sheet,master_sheet,entry_range和master_row)。
最后一件事,您可能希望保护Master表格,因为如果有人意外地编辑了编辑的最后一个单元格以外的单元格,则输入行将被复制到该行(由于getLastRow()函数的操作方式)。
希望这有帮助!
var ss = SpreadsheetApp.getActiveSpreadsheet();
var entry_sheet = ss.getSheetByName("Data Entry");
var master_sheet = ss.getSheetByName("Master Table");
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('MyMenu')
.addItem('Submit', 'mySubmit')
.addToUi();
}
function mySubmit() {
var entry_range = entry_sheet.getRange("B12:E12");
var master_row = (master_sheet.getLastRow() + 1);
entry_range.copyValuesToRange(master_sheet, 1, 3, master_row, master_row);
}