【发布时间】:2018-02-06 19:29:05
【问题描述】:
我已经搜索了一段时间,并尝试将来自各种已回答主题的脚本一起工作,这将允许我根据输入的数据调整相邻单元格的内容。我似乎无法让它正常工作,需要一些帮助才能将船引导到正确的方向。这是我想要完成的任务:
--如果单元格 A2:A 的值为六位数字且单元格 D2:D(同一行)的值为“MATCH”,则单元格 B2:B 的值应设置为“ANN” -- 如果单元格 A2:A 的值是一个六位数字并且单元格 D2:D(同一行)的值是“NO MATCH”,那么单元格 B2:B 的值应该设置为“ANN”并且一个 drop ['ANN','RNW'] 的向下数据验证列表填充列表的默认值设置为“ANN” --如果单元格 A2:A 的值的长度为 7 个或更大的字符,则 ['1DY','RNW','NEW'] 的下拉数据验证列表填充列表的默认值设置为“一岁”
是否可以将数据验证单元格的值设置为特定的默认值?这很重要,因为当用户输入数据时,他们很可能会接受默认值。如果他们不想要默认值,那么他们可以从下拉列表中选择一个值。
我构建了一个测试表,它显示了当在 A 列中填写数据以及在 B 列中填写相关值时表的外观。
我的测试在这里:https://docs.google.com/spreadsheets/d/1p8sq63S-vSU1FKFLjtr2ZypItN5viXotoZL0Ki2PoQM/edit?usp=sharing
这是我尝试构建的拼凑而成的脚本(我也觉得这很有趣)。这是我第一次尝试让 Google 脚本在电子表格上运行。
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var aSheet = ss.getActiveSheet();
var aCell = aSheet.getActiveCell();
var aColumn = aCell.getColumn();
var aRow = aCell.getRow();
//var licenseStatus = aSheet.getRange(aRow, aColumn+9).getValue();
// The row and column here are relative to the range
// getCell(1,1) in this code returns the cell at B2, B2
var licenseTypeCell = aSheet.getRange(aRow, aColumn+1);
if (aColumn == 1 && aSheet.getName() == 'Onsite') {
if (isnumber(aCell) && (len(aCell) <= 6)) {
var rule = SpreadsheetApp.newDataValidation().requireValueInList(['ANN','RNW']).build();
licenseTypeCell.setValue("ANN");
licenseTypeCell.setDataValidation(rule);
} else {
var rule = SpreadsheetApp.newDataValidation().requireValueInList(['1DY','RNW','NEW']).build();
licenseTypeCell.setValue("1DY");
licenseTypeCell.setDataValidation(rule);
}
}
}
任何帮助/指导将不胜感激。
【问题讨论】:
标签: google-sheets spreadsheet google-spreadsheet-api google-sheets-api