Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当特定单元格包含0时,以编程方式为行着色_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 当特定单元格包含0时,以编程方式为行着色

Javascript 当特定单元格包含0时,以编程方式为行着色,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在寻找一个脚本,当列K中的单元格包含0时,该脚本会将一行变为绿色 例如,当K5具有0时,我希望B5到L5变为绿色 条件格式是不够的,因为我有一些行现在不需要格式化,但将来可能需要格式化。看这太疯狂了!我玩得很开心 打开工作表,选择要变为绿色的范围,然后在菜单中选择“行魔术”|设置目标。系统将提示您输入该范围的名称 然后去划船魔术|在你想看的场地上贴上零。输入要更新的范围的名称(列出了所有范围的名称)。现在在字段中输入零,范围将变为绿色背景!我的电脑有点延迟~1秒 这是我的第一个应用程序脚本,

我正在寻找一个脚本,当列K中的单元格包含
0
时,该脚本会将一行变为绿色

例如,当K5具有
0
时,我希望B5L5变为绿色


条件格式是不够的,因为我有一些行现在不需要格式化,但将来可能需要格式化。

看这太疯狂了!我玩得很开心

打开工作表,选择要变为绿色的范围,然后在菜单中选择“行魔术”|设置目标。系统将提示您输入该范围的名称

然后去划船魔术|在你想看的场地上贴上零。输入要更新的范围的名称(列出了所有范围的名称)。现在在字段中输入零,范围将变为绿色背景!我的电脑有点延迟~1秒

这是我的第一个应用程序脚本,所以它很可能会有很多改进

function onOpen(e) {
  SpreadsheetApp.getUi()
  .createMenu('Row Magic')
  .addItem('Set Target', 'setTarget')
  .addItem('Attach', 'attachToRange')
  .addToUi();
}

function onEdit(e) {
  //var range = e.range;
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  // Returns the active cell
  var cell = sheet.getActiveCell();
  var value = cell.getValue(); 
  var md = sheet.getDeveloperMetadata();

  md.forEach(function(m) {
    if (m.getKey().indexOf('rangeTarget_') === 0) {
      var keySplit = m.getKey().split('_');
      var row = keySplit[1];
      var column = keySplit[2];
      if (row == cell.getRow() && column == cell.getColumn()) {
        var rangeName = m.getValue();
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var ranges = ss.getNamedRanges();
        ranges[0].getName()
        ranges.forEach(function (r) { 
          if (r.getName() === rangeName) {
            if (value === 0) {
              r.getRange().setBackground('#00FF00');
            }
            else {
              r.getRange().setBackground('#FFFFFF');
            }
          }
        });
      }
    }
  });

}

function setTarget() {
  var ui = SpreadsheetApp.getUi();
  var response = ui.prompt('Enter name', ui.ButtonSet.OK_CANCEL);
  if (response.getSelectedButton() == ui.Button.OK) {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
    var range = sheet.getActiveRange();
    ss.setNamedRange(response.getResponseText(), range)
  }  
}

function attachToRange() {
  var ui = SpreadsheetApp.getUi();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  // Returns the active cell
  var cell = sheet.getActiveCell();

  var namedRanges = ss.getNamedRanges();
  var rangeNames = [];
  namedRanges.forEach(function(r) {
    rangeNames.push(r.getName());
  });

  var response = ui.prompt('Enter range to target\n' + rangeNames.join('\n'), ui.ButtonSet.OK_CANCEL);
  if (response.getSelectedButton() === ui.Button.OK) {
    var r = response.getResponseText();
    if (rangeNames.indexOf(r) > -1) {
      var row = cell.getRow();
      var column = cell.getColumn();
      sheet.addDeveloperMetadata('rangeTarget_'+row+'_'+column, r);
    }
  }
}

听起来好像你在问一个关于电子表格应用程序的问题。或者这是一个html表格?它是一个谷歌电子表格。如果在应用颜色时指定其他条件,解决方案会更有趣。不仅列K=0。例如,如果要手动标记彩色行,可以插入带有复选框的附加列,并且仍然应用条件格式。使用onEdit触发器仅适用于手动编辑单元格或区域。