构建一个仪表板/工具来收集一些非常独特的数据(为了清晰起见,我已经制作了一个包含简单信息的示例表)。
比如说,我想把它给一个数着车进、出、停在停车场周围的人。仪表板将显示当前车辆的数量,并且只显示实际计算过的车辆;如果所有三列(入、出、停)都为0,则仪表板上不会显示它们。
仪表板上的快速加/减区域也应该有4次下降,一次是从所有可能被统计的车辆的帮助表上的一个名字列表中提取出来的,然后是三个带有数字的下拉列表。它旁边有两个按钮,一个用于添加,另一个用于减法。
我试图实现的功能是,当您从快速添加/减法中选择一个车辆,然后在" in“下拉列表中选择2,它需要转到帮助表,找到带有正确车辆的行,在in列中添加两个。类似的减法按钮,但我想我想避免一个负数。
最大的问题是,这是应用程序脚本一开始就可以做的事情吗?我想是的,我试过尝试使用可用的函数,但我无法解决。
如果其中任何一个令人困惑,希望我列举的示例将有助于澄清:
发布于 2022-06-22 11:52:38
描述
这个问题有两个部分。
首先,在仪表板的单元格A1中进行一个简单的查询,就可以得到理货=QUERY(TallyList,"where B+C+D > 0")。
第二,为每个按钮编写一个脚本,将值加或减到计数中。脚本addButton需要分配给Add Button,subtractButton需要分配给减法Button。
Code.gs
function addButton() {
doTheMath(true);
}
function subtractButton() {
doTheMath(false);
}
function doTheMath(plus) {
try {
let spread = SpreadsheetApp.getActiveSpreadsheet();
let dash = spread.getSheetByName("Dashboard");
// get tally count
let tally = dash.getRange(3,6,1,4).getValues(); // F3:I3
let helper = spread.getSheetByName("Helper Static List");
// get TallyList values
let tallyList = helper.getRange("TallyList").getValues();
// find the car in TallyList
let carIndex = tallyList.findIndex( row => row[0] === tally[0][0] );
let car = tallyList[carIndex];
// increment the count inplace
car.forEach( (count,index,car) => { if( index > 0 ) { car[index] = plus ? count+tally[0][index] : count-tally[0][index] } } );
// now put car count back into TallyList, need to add 1 to carIndex
helper.getRange(carIndex+1,1,1,car.length).setValues([car]);
}
catch(err) {
//SpreadsheetApp.getUi().alert(err);
console.log(err);
}
}参考
https://stackoverflow.com/questions/72709395
复制相似问题