В Google Sheet / Google App Script, когда я редактирую ячейку, я хочу вызвать функцию для другой ячейки, но не работает - PullRequest
0 голосов
/ 23 января 2020

У меня маленькая проблема. В моем Google Sheet я хочу: Когда я меняю цвет фона ячейки, я хочу написать в другой ячейке HEX-код цвета, который я изменил. Я делаю небольшой код, который получает цвет фона ячейки, но когда я редактирую цвет ячейки, ячейка, где находится код HEX, не обновляется. Я поместил здесь свой код, чтобы получить цвет HEX-кода другой ячейки.

function GetCellColorCode(input)
  {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var cell = ss.getRange(input)
    return cell.getBackground();
  }

Я положил изображение в таблицу Excel. Например, я вызываю эту функцию в ячейке L4 и помещаю в параметры ячейку C4. Код работает хорошо при первом вызове функции, но когда я обновляю цвет другой ячейки, ничего не происходит Когда я обновляю цвет фона ячейки C4, я не буду автоматически обновлять его значение ячейки L4.

это мой стол Excel

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 24 января 2020

Это грубый и быстрый способ сделать это.

function customBGDialog() {
  var ss=SpreadsheetApp.getActive();
  var html='<html><head><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"><script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>';
  html+='</head><body>'; 
  html+='<h1>Change Background Color Of Active Cell<h1>';
  html+='<br /><select id="sel1"><option value="#ffff00">Yellow</option><option value="#ff0000">Red</option><option value="#0000ff">Blue</option></select><input type="button" value="Change Background" onClick="doIt()" />';
  html+='<script>function doIt(){google.script.run.changeBackground($("#sel1").val());}</script>';
  html+='</body></html>';
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showSidebar(userInterface);
}

function changeBackground(color) {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  sh.getActiveCell().setBackground(color);
  sh.getActiveCell().offset(0,1).setValue(color);
}

Анимация:

enter image description here

...