首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试应用程序脚本/Google工作表查找某一行,然后将值(来自其他单元格)添加到该行的列中

尝试应用程序脚本/Google工作表查找某一行,然后将值(来自其他单元格)添加到该行的列中
EN

Stack Overflow用户
提问于 2022-06-22 03:37:24
回答 1查看 27关注 0票数 -1

构建一个仪表板/工具来收集一些非常独特的数据(为了清晰起见,我已经制作了一个包含简单信息的示例表)。

比如说,我想把它给一个数着车进、出、停在停车场周围的人。仪表板将显示当前车辆的数量,并且只显示实际计算过的车辆;如果所有三列(入、出、停)都为0,则仪表板上不会显示它们。

仪表板上的快速加/减区域也应该有4次下降,一次是从所有可能被统计的车辆的帮助表上的一个名字列表中提取出来的,然后是三个带有数字的下拉列表。它旁边有两个按钮,一个用于添加,另一个用于减法。

我试图实现的功能是,当您从快速添加/减法中选择一个车辆,然后在" in“下拉列表中选择2,它需要转到帮助表,找到带有正确车辆的行,在in列中添加两个。类似的减法按钮,但我想我想避免一个负数。

最大的问题是,这是应用程序脚本一开始就可以做的事情吗?我想是的,我试过尝试使用可用的函数,但我无法解决。

如果其中任何一个令人困惑,希望我列举的示例将有助于澄清:

示例表

仪表板截图

EN

回答 1

Stack Overflow用户

发布于 2022-06-22 11:52:38

描述

这个问题有两个部分。

首先,在仪表板的单元格A1中进行一个简单的查询,就可以得到理货=QUERY(TallyList,"where B+C+D > 0")

第二,为每个按钮编写一个脚本,将值加或减到计数中。脚本addButton需要分配给Add Button,subtractButton需要分配给减法Button。

Code.gs

代码语言:javascript
复制
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);
  }
}

参考

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72709395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档