javascript - 功能:接收多个输入,并将它们添加到列中
问题描述
我是一个写谷歌表格功能的新手。我想实现以下目标:每次在提示窗口中插入值时,都应将值复制到 C 列中的第一个空单元格中。
此功能应重复执行,直到用户手动关闭提示窗口。
function inserisciID()
{
// Chiede il valore (asks for value)
var ID = SpreadsheetApp.getUi().prompt("Spara l'ID prodotto").getResponseText();
//Inserisce l'ID nella prima cella vuota della colonna A
//(finds a blank cell, but I don't know how to find it in the C column)
var blank = dealCells.join().split(',');
for(var i = 0; i > 0; i++)
{
if (blank.indexOf("") != -1) {
cell.setValue(ID);
i==-1;
}
// I missed the 'else'
}
}
解决方案
解释:
我认为您的目标是输入一组逗号分隔值,并将这些值中的每一个附加到最后一个包含内容的单元格之后的 C 列。
您不需要 for 循环来实现这一点。一旦用户输入逗号分隔值列表:
test1,test1
. 您用逗号分割这些值并创建所需的数组。由于您的目标是将数据附加到单个列中,因此您需要将此一维数组转换为以下形式的二维数组:[ [test1], [test2],..]
。为此,您可以使用map函数:const input = ID.split(',').map(r=>[r]);
计算完
input
数组后,您需要找到包含 C 列内容的最后一个单元格。为此,您可以使用filter函数:const start_row=sheet.getRange('C:C').getValues().filter(String).length + 1;
最后,您可以使用setValues()有效地将所有值设置到 C 列:
sheet.getRange(start_row,3,input.length,1).setValues(input);
解决方案:
function inserisciID(){
const ID = SpreadsheetApp.getUi().prompt("Spara l'ID prodotto").getResponseText();
const input = ID.split(',').map(r=>[r]);
const sheet = SpreadsheetApp.getActive().getActiveSheet();
const start_row=sheet.getRange('C:C').getValues().filter(String).length + 1;
sheet.getRange(start_row,3,input.length,1).setValues(input);
}
正如我在解释部分提到的,用户输入的值需要用逗号分隔:test1,test2,test3
等。
推荐阅读
- c# - 无法批量加载。文件“C:\CSV\Alarm.csv”不存在或您没有文件访问权限。-- SQL Server
- java - 禁用自定义健康检查端点
- python - Google Colab 不会运行所有一个单元格
- python - CVXPY 二次规划;ArpackNoConvergence 错误
- reactjs - 如何根据 React APP 中网站上的语言使元标记动态化?[反应头盔 + i18next]
- qt - 在 Linux 下从源代码编译 Qt5Quick 和 Qt5Qml
- python - Pyperclip 不会复制到 shell 之外的剪贴板
- .net - 有没有办法在.Net中的SOAP服务和Rest API之间进行通信
- php - 登录或在网站上注册后的空白页面。Laravel 问题
- wpf - 在资源字典classbehind中获取元素引用