【问题标题】:Is there a way to use radio buttons in a Google Sheets Dialog and save the value, using Google App Scripts?有没有办法在 Google 表格对话框中使用单选按钮并使用 Google App Scripts 保存值?
【发布时间】:2019-09-04 20:02:39
【问题描述】:

简单地说,我的目标是突出显示一个 google 表格(“源”)上的单元格范围,并将其移动到另一个不同的 google 表格文档(“目标”)。 Target 有多个工作表(选项卡?),并且经常添加新工作表。

重要提示:明确地说,我不是在同一个文档中从一张纸复制到另一张纸。我正在从一个 google sheet 文档复制到一个复杂的不同的 google sheet 文档。

目前,我的代码允许用户:

  1. 在 SOURCE google 工作表中突出显示单元格范围。
  2. 选择自定义菜单选项。
  3. 选择自定义菜单选项后,突出显示的单元格区域中的数据将复制到 TARGET google 工作表。

目前,“目标”是硬编码的。

我想做的是建立一个单选按钮列表。目标 google 工作表中存在的每个工作表都有一个单选按钮。当用户按下“确定”按钮时,允许用户选择一个,然后将数据移动到该特定工作表。

我已经搜索了一段时间,但我什至找不到任何关于将单选按钮放在 google sheet 对话框中的信息,更不用说根据另一个 google sheet 文档中存在的工作表构建单选按钮列表了。

【问题讨论】:

  • 一个对话框可以处理任何你想给它的html/javascript/css。

标签: google-apps-script google-sheets radio-button


【解决方案1】:

我能够使用下面的脚本使用Google Shoths复选框来创建单选按钮效果(仍然看起来像一个复选框,但是当检查给定行中的一个复选框时,它会取消选中该行中的任何其他复选框(列BE) 之前已检查)。

我的复选框位于 B、C、D、E 列中,我相信(我正在学习,所以我不是 100% 确定)这就是“for(var i = 2;i

   function onEdit(evt) {

    var range = evt.range;
    var val = range.getValue();
    var row = range.getRow();
    var col = range.getColumn();

    // -------------------------------------
    // --- Only 1 checkbox per row can be ticked ---
    // -------------------------------------
  for(var i = 2;i<6;i++){
    if(i == col) continue;

        if (val) {
            SpreadsheetApp.getActiveSheet().getRange(row,i).setValue('FALSE');    
}
    }}

【讨论】:

    【解决方案2】:

    这是一个简单的无线电对话示例:

    function radiosOnADialog() {
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getActiveSheet();
      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></head>';
      for(var i=0;i<10;i++) {
        html+=Utilities.formatString('<br /><input type="radio" name="rgroup" id="%s" value="%s" onChange="getSelected();" />%s','id'+ Number(i+1),'radio' + Number(i+1),' radio' + Number(i+1));
      }
      html+='<body><br /><input type="button" value="close" onClick="google.script.host.close()" /><div id="msgdiv"></div>';
      html+='<script>function getSelected(){ var selected=document.querySelector(\'input[name="rgroup"]:checked\').value;document.getElementById("msgdiv").innerHTML="<br />You selected " + selected  + ".<br />";}</script></body></html>'; 
      var ui=HtmlService.createHtmlOutput(html);
      SpreadsheetApp.getUi().showModelessDialog(ui, 'A Radio Dialog');
    }
    

    对话框:

    【讨论】:

    • 对不起,我不清楚。我想知道是否有一种方法可以使用 Google App Scripts 而不是使用 HTML。它没有出现在那里。
    • 虽然该函数使用 html 字符串,但它实际上是一个服务器端函数。曾经有另一个 UI 创建面板和其他东西。老实说,我从来没有使用过,因为我更喜欢使用 html、css 和 javascript。
    • 据我所知,所有 Google 表格对话框和边栏都是客户端。所以html,javascript和css。以及许多其他库,例如 JQuery。
    • 一切都好。我感谢您的帮助。我是这个东西的 100% 新手。从零开始学习。我会到达那里。再次感谢您!
    • 我有一个简单的对话框,可以在电子表格中使用,它可能对您有一些价值。您可以阅读并获取它的代码here。它被称为复制/移动对话框(相同的电子表格)
    【解决方案3】:

    结束这个问题,因为我现在知道需要使用 HTML。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      相关资源
      最近更新 更多