Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >google应用程序根据从属下拉列表粘贴行的脚本

google应用程序根据从属下拉列表粘贴行的脚本
EN

Stack Overflow用户
提问于 2021-02-04 20:47:07
回答 1查看 188关注 0票数 0

Copy of the sheet I've created.我对dependent下拉列表的功能很满意,但是我的目标是从"materials“表(列B:I)中复制行中的所有数据,这些数据对应于从"crop_specific”表的E列的dependent下拉列表中选择的选项,将此信息复制到E:L列。我希望保留当前脚本的功能,如果从D列的选择发生更改,则清除E列中的内容,将其扩展到整个行。任何帮助都将不胜感激。该脚本的代码如下。

代码语言:javascript
运行
AI代码解释
复制
    var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("crop_specific");
var wsMaterials = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("materials");
var options = wsMaterials.getRange(2,1,wsMaterials.getLastRow()-1,9).getValues();

function onEdit(e){
  var activeCell = e.range;
  var val = activeCell.getValue();
  var r = activeCell.getRow();
  var c = activeCell.getColumn();
  var wsName = activeCell.getSheet().getName();
  if(wsName == "crop_specific" && c === 4 && r>1){
    if(val === ""){
      ws.getRange(r,5).clearContent();
      ws.getRange(r,5).clearDataValidations();
    }else {
    ws.getRange(r,5).clearContent();
    var filteredOptions = options.filter(function(o){ return o[0] ===val });
    var listToApply = filteredOptions.map(function(o){return o[1] });
    var cell = ws.getRange(r,5);
    applyValidationToCell(listToApply,cell);
    }
  }
}

function applyValidationToCell(list,cell){
  
  var rule = SpreadsheetApp
    .newDataValidation()
    .requireValueInList(list)
    .setAllowInvalid(false)
    .build();

  cell.setDataValidation(rule);
}
EN

回答 1

Stack Overflow用户

发布于 2021-02-04 22:15:48

解释:

  • 您可以添加一些代码,以便根据下拉选择从materials工作表中提取数据。

  • 删除列A,因为您要从materials工作表中将B复制到I。

  • 将值复制到crop_specific工作表中的E到L范围。

我对crop_specific表有一些担忧:

  • 从编辑的行开始,将数据粘贴到E-L范围内。因此,我假设您想要清除该范围中以前的内容,否则新值将覆盖该范围的一部分。

  • 列E包含一个下拉菜单,具体取决于列D的值。您可能希望拖动该下拉菜单,以便将其应用于列E中的其他单元格。

解决方案:

代码语言:javascript
运行
AI代码解释
复制
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("crop_specific");
var wsMaterials = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("materials");
var options = wsMaterials.getRange(2,1,wsMaterials.getLastRow()-1,9).getValues();

function onEdit(e){
  var activeCell = e.range;
  var val = activeCell.getValue();
  var r = activeCell.getRow();
  var c = activeCell.getColumn();
  var wsName = activeCell.getSheet().getName();
  if(wsName == "crop_specific" && c === 4 && r>1){
    if(val === ""){
      ws.getRange(r,5).clearContent();
      ws.getRange(r,5).clearDataValidations();
    }else {
    ws.getRange(r,5).clearContent();
    var filteredOptions = options.filter(function(o){ return o[0] ===val });
    var listToApply = filteredOptions.map(function(o){return o[1] });
    var cell = ws.getRange(r,5);
    applyValidationToCell(listToApply,cell);
  
    var matData = wsMaterials.getDataRange().getValues().filter(r=>r[0]===val); // new code
    matData.forEach(a => a.splice(0, 1)); // new code
    ws.getRange("E2:L" + ws.getLastRow()).clearContent(); // new code
    ws.getRange(r,5,matData.length,matData[0].length).setValues(matData); // new code
    
    }
  }
}

function applyValidationToCell(list,cell){
  
  var rule = SpreadsheetApp
    .newDataValidation()
    .requireValueInList(list)
    .setAllowInvalid(false)
    .build();

  cell.setDataValidation(rule);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66053565

复制
相关文章
利用Windows Azure Pack创建虚拟化网络
接上一篇,SCVMM网络虚拟化配置软件定义网络SDN,不太清楚的同学可以先看看。我们利用Windows Server 2012 R2与SCVMM R2进行了网络虚拟化的配置,下面我们要来验证一下网络虚拟化是否生效。那么,最简单的方法就是利用Windows Azure Pack来进行虚拟网络创建。最近太忙了,这篇文章早写好了快两个月。
李珣
2019/03/14
4960
运用SGD提高网络性能
在深度学习的过程中,一个不经过任何训练的网络的性能准确率很低,并没有达到预想中的程度,那么应该如何提高网络性能?如何让准确率达到较高的程度呢?
算法与编程之美
2022/10/28
4680
运用SGD提高网络性能
如何提高Java性能?
首先,你需要知道需要修复什么,然后再开始修复它。同样的规则也适用于这里。例如,如果您的应用程序通过网络接收数据存储。您应该关注网络的数据传输和数据存储在磁盘上,可能是一个RDBMS。 然后分离出它们,要做到这一点你的架构必须松耦合,比如引入异步等等。
lyb-geek
2022/03/09
7980
如何提高CSS性能
结合现代网站的复杂性和浏览器处理CSS的方式,即使是适量的CSS也会成为设备受限、网络延迟、带宽或数据限制的瓶颈。因为性能是用户体验的一个至关重要的部分,所以必须确保在各种形状和尺寸的设备上提供一致的高质量体验,这也需要优化你的CSS。
coder_koala
2021/05/28
2.2K0
如何提高CSS性能
SD-WAN解决方案如何提高网络性能?
在2016年国家广域网报告调查中,有要求受访者表明对其WAN影响最大的因素。考虑到与局域网不同,广域网有一些性能限制特征,如包丢失和延迟程度高,因此受访者表示的前五个因素中有两个与性能相关并不奇怪。由于我们正在经历从传统WAN到SD-WAN的根本转变,因此现在是了解SD-WAN解决方案如何提高网络性能的重要时刻。
SDNLAB
2018/08/16
6230
SD-WAN解决方案如何提高网络性能?
虚拟网络中可视性平面提高性能和安全性
软件定义网络(SDN)和网络功能虚拟化(NFV)可以带来很多好处,但增加网络抽象层是有代价的:对物理层链路的流量的可视性。 同时,越来越快的网络也加剧了这一挑战,因为现在几乎没有网络监控、管理或安全工具可以在40Gbps或100Gbps运行。网络数据包中转(NPB),也被称为网络可视性控制器,它可以通过捕捉、过滤、聚合和优化流量来解决这个挑战。这可以使1Gbps和10Gbps性能管理和安全系统在40/100Gbps网络运行。但这些物理NPB能否有效在虚拟网络基础设施运行?并且,NPB功能本身是否可以虚拟化以
SDNLAB
2018/04/04
7430
运用优化器提高网络测试性能
在对mnist进行网络性能测试的时候,没有经过网络训练的模型预测正确结果两次出现结果不一样,而且预测的结果的正确率比较低,这个时候我们就在想如何提高网络的性能呢?模型需要训练,如何进行训练?
算法与编程之美
2022/10/28
2280
运用优化器提高网络测试性能
如何提高性能测试效能
上周六应邀在天津devops峰会的质量内建专场做了一次分享,主题是《稳定性保障利器:全链路压测》。其中关于全链路压测对质量内建的意义,我做了一个总结,如下图所示。本文基于下图做了展开描述,仅供参考。
程序媛淼淼
2022/12/07
7960
如何提高性能测试效能
如何提高服务器性能
服务器的资源是有限的,但由于这个资源是虚拟的,在使用时容易出现冗余,从而被浪费;有时候也会使用不当,使得服务器性能低下,和硬件配置不符。因此提高服务器性能,是一个合格的管理员必须掌握的技巧,服务器效率的提升,也能提高服务器性价比,获得更好的效益。那么服务器要如何提高性能呢?
用户9973510
2022/08/29
1.3K0
如何提高JSON解析的性能
同一种编程语言之间的数据通信非常简单,因为数据的规范都是相同的,所以输入和输出不需要做任何转换。但是在不同的编程语言之间做数据通信,就比较麻烦了。比如,一种语言按照自身的标准规范输出了一份数据,另一门语言接收到时需要按照自身编程语言标准进行对齐。
拉维
2019/08/12
4.7K0
如何提高JSON解析的性能
如何提高性能测试效能
上周六应邀在天津devops峰会的质量内建专场做了一次分享,主题是《稳定性保障利器:全链路压测》。其中关于全链路压测对质量内建的意义,我做了一个总结,如下图所示。本文基于下图做了展开描述,仅供参考。
老_张
2023/03/01
7220
如何提高性能测试效能
如何提高程序性能
老板告诉你,开发一个静态web服务器,把磁盘文件(网页、图片)通过网络发出去,怎么做?
ruochen
2021/11/21
7010
混合虚拟化网络,网络性能优化之辩
网络设备在虚拟化后是否依旧可以快速提供良好的性能?这是目前大家最为关注的问题之一。下面就讨论一下传统网络设备和虚拟化后面临的问题以及怎样使用网络设备才能提供实时管理监控,保护SDN/NFV网络的安全。
SDNLAB
2018/04/03
1.3K0
混合虚拟化网络,网络性能优化之辩
如何提高 Java 中锁的性能
两个月前向Plumbr公司引进线程死锁的检测之后,我们开始收到一些类似于这样的询问:“棒极了!现在我知道造成程序出现性能问题的原因了,但是接下来该怎么做呢?”
哲洛不闹
2018/09/19
1K0
如何提高深度学习的性能
您可以使用这20个提示,技巧和技术来解决过度拟合问题并获得更好的通用性
花落花飞去
2018/02/08
2.6K0
如何提高深度学习的性能
React篇(010)-为什么虚拟 dom 会提高性能?
答案: 虚拟dom(virtual dom) 其实就是一个JavaScript对象,通过这个JavaScript对象来描述真实dom。 真实dom:以前没有虚拟dom,如果需要比较两个页面的差异,我们需要通过对真实dom进行比对。真实dom节点是非常复杂的,它里面会绑定的事件,它会有属性,背后会有各种方法,会频繁触发重排与重绘,所以两个真实dom比对,非常耗性能。 总损耗 = 真实DOM完全增删改 + (可能较多的节点)重排与重绘 虚拟dom:相当于在js和真实dom中间加了一个缓存,利用dom diff算法避免了没有必要的dom操作,从而提髙性能。 总损耗 = 虚拟DOM增删改 + (与Diff算法效率有关)真实DOM差异增删改 + (较少的节点)重排与重绘 具体实现步骤如下: 1. 用JavaScript对象结构表示DOM树的结构;然后用这个树构建一个真正的DOM树,插到文档当中; 2. 当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异; 3. 把步骤2所记录的差异应用到步骤1所构建的真正的DOM树上,视图就更新了。
齐丶先丶森
2022/05/12
5020
如何最大限度提高.NET的性能
优化.NET的性能1)避免使用ArrayList。    因为任何对象添加到ArrayList都
Java架构师必看
2020/10/15
7800
如何使用 Set 来提高代码的性能
我确信有很多开发人员坚持使用基本的全局对象:数字,字符串,对象,数组和布尔值。对于许多用例,这些都是需要的。但是如果想让你的代码尽可能快速和可扩展,那么这些基本类型并不总是足够好。
coder_koala
2019/08/28
1.3K0
如何使用 Set 来提高代码的性能
我确信有很多开发人员坚持使用基本的全局对象:数字,字符串,对象,数组和布尔值。对于许多用例,这些都是需要的。 但是如果想让你的代码尽可能快速和可扩展,那么这些基本类型并不总是足够好。
前端小智@大迁世界
2019/07/10
1.8K0
如何使用 Set 来提高代码的性能
提高Java性能
Java 的许多细节和性能标志都可以影响应用的性能,只不过从来都没有一个叫 -XX:+RunReallyFast 的神奇标志。
宇宙之一粟
2021/01/13
6810

相似问题

使用FK自动向Django中的用户填充模型字段

11

Django客户与用户的onetoone关系-如何在创建用户时为该模型创建字段?

14

使用OneToOne关系的Django模型?

30

与未使用查询的用户的Django onetoone关系

112

自动填写Django模型中的用户字段

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文