创建带有“将值放入选定单元格”复选框的边栏

Create Sidebar with Multi-selection Checkbox that Puts Value into Selected Cell

本文关键字:单元格 复选框 创建      更新时间:2023-09-26

我使用的是谷歌电子表格,想要创建一个带有多个复选框和按钮的侧边栏菜单。选中选择1或单击复选框,然后用户按Enter键时,复选框中的值应显示在电子表格中的选定单元格中。

有一种输入类型的复选框:

<form action="">
  <input type="checkbox" name="myCategory" value="Yes">I like toast<br>
  <input type="checkbox" name="myCategoryTwo" value="No">Don't like toast
</form>

gs代码

function onOpen() {
  SpreadsheetApp.getUi()
      .createMenu('Custom Menu')
      .addItem('Show sidebar', 'showSidebar')
      .addToUi();
};

gs"要创建的服务器代码"对话框

function showSidebar() {
  Logger.log('showSidebar ran: ' );
  var html = HtmlService.createTemplateFromFile('Dialog')
    .evaluate()
    .setSandboxMode(HtmlService.SandboxMode.IFRAME)
    .setTitle('My custom sidebar')
    .setWidth(300);
  SpreadsheetApp.getUi()
    .showSidebar(html);
}

HTML

<div>
  <form action="">
    <input id="idYesChk" type="checkbox" name="myCategory" value="Yes">I like toast<br>
    <input type="checkbox" name="myCategoryTwo" value="No">Don't like toast
  </form>
  <input type="text">
  <input type='button' value="Update Spreadsheet" onclick='fncCallServerToDoSomething()'>
</div>
<script>
  function fncCallServerToDoSomething() {
    console.log('fncCallServerToDoSomething ran!');
    var aReturnedValue = document.getElementById("idYesChk").value;
    console.log("value of check box: " + aReturnedValue);
    google.script.run
      .withFailureHandler(onFailure)
      .gsFunctionToRun(aReturnedValue);
    //google.script.host.close();
  };
  function onFailure(error) {
    console.log(error.message);
  };
</script>

gs代码将值写入电子表格

将价值投入活动单元格

function gsFunctionToRun(argValueRetrieved) {
  Logger.log('argValueRetrieved: ' + argValueRetrieved);
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var theSheet = ss.getActiveSheet();
  var activeCell = ss.getActiveCell().getA1Notation();
  var theRange = theSheet.getRange(activeCell);
  theRange.setValue(argValueRetrieved);
};

将值放入指定的范围(单元格)

function gsFunctionToRun(argValueRetrieved) {
  Logger.log('argValueRetrieved: ' + argValueRetrieved);
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var theSheet = ss.getActiveSheet();
  var theRange = theSheet.getRange("B4");
  theRange.setValue(argValueRetrieved);
};