【问题标题】:Create Sidebar with Multi-selection Checkbox that Puts Value into Selected Cell创建带有多选复选框的侧边栏,将值放入选定的单元格
【发布时间】:2015-03-04 08:47:54
【问题描述】:

我正在使用 Google 电子表格并希望创建一个带有多个复选框和按钮的侧边栏菜单。选择选择1或单击选中框时,用户按Enter键,复选框中的值应显示在电子表格中的选定单元格中。

【问题讨论】:

  • 阅读本文档,并使用示例代码。 Custom Sidebars - Google Documentation 让该示例工作,然后修改 HTML 以添加您想要的内容。搜索 HTML 复选框,并将其添加到 HTML。

标签: javascript html google-apps-script spreadsheet


【解决方案1】:

有checkbox的输入类型:

<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);

};

【讨论】:

    猜你喜欢
    • 2011-08-26
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    相关资源
    最近更新 更多