繁体   English   中英

创建下拉列表,当它使用 Google App Script 生成时,它将显示下拉菜单中的第一项

[英]Create drop down list which will show the first item from the drop down menu when it is generated Using Google App Script

我正在尝试使用 google app 脚本在 google sheet 中创建一个下拉列表。 表格链接: https://docs.google.com/spreadsheets/d/1TESZNYgSJC-ye8r9CcW57-Vt1yU5VcvELiJw4oRwAZQ/edit#gid=0

在此表中,B 栏中有负责人。 每当我将 select 此列下拉列表中的任何名称时,另一个下拉列表将在 C 列中创建,并且在 D 列中将显示当前日期。 例如,如果我在单元格 B2 中使用 select 'Anushka',则会在单元格 C2 中创建一个下拉列表 'New'、'on going'、'done'、'on hold',其中包含下拉列表中的第一个值当前日期将出现在单元格 D2 中。 到目前为止,我可以在单元格 C2 中创建下拉菜单,还可以在单元格 D2 中基于一个单元格 B2 创建当前日期。 但我不知道如何始终显示单元格 C2 中下拉列表中的第一项。 现在它给了我空白单元格,我需要 select 从菜单中获取一些东西,但我希望在创建下拉菜单时,它会显示第一项不是空单元格。 我也附上了代码。 谁能帮我在哪里修改?

  var sheet = event.source.getActiveSheet();
  var colrange=sheet.getRange("B2:B").isBlank()
  var actRng = event.source.getActiveRange();
  var index = actRng.getRowIndex();
  var cindex = actRng.getColumnIndex();

   if(colrange){
    sheet.getRange(index,4).clearContent()
    sheet.getRange(index,3).clearDataValidations()
   } else{
    var date = Utilities.formatDate(new Date(),"EST", "MMMM-dd-yyyy");
    var list=["New", "Ongoing", "Done", "On-Hold"]

    var rule=SpreadsheetApp.newDataValidation().requireValueInList(list).build()
    sheet.getRange(index,3).setDataValidation(rule)
    sheet.getRange(index,4).setValue(date)
   }

自定义验证

function onEdit(e) {
  e.source.toast("Entry");
  const sh = e.range.getSheet();
  if(sh.getName() == "Sheet0" && e.range.columnStart == 2 && e.value) {
    e.source.toast("Flag1");
    let rg = e.source.getRangeByName("Status");
    e.range.offset(0,1).setDataValidation(SpreadsheetApp.newDataValidation().requireValueInRange(rg));
    e.range.offset(0,2).setValue(new Date());
    Logger.log(e.source.getRangeByName("Status").getValues()[0][0])
    e.range.offset(0,1).setValue(e.source.getRangeByName("Status").getValues()[0][0]);
  }
}

演示:

在此处输入图像描述

命名范围:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM