Google表格脚本边栏按钮未激活功能

时间:2018-03-24 00:33:50

标签: javascript google-apps-script sidebar google-sheets-api

我花了好几个小时试图解决这个问题,因为在我这里提问之前我觉得我应该这样做。搜索,查看答案,尝试了一些东西。我想我是这样学习并扩展我的技能/知识。

无论如何,我正试图开始使用侧边栏来使我的工作表脚本应用程序更好地工作,并进行小块测试。我希望Clear Old按钮(此时)只需打开一个包含日期的警告框,该文件框由datePicker生成的文本框提供。

这是HTML:

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Datepicker - Default functionality</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
   <script>
  $( function() {
    $( "#datepicker" ).datepicker();
  } );
  </script>
    <base target="_top">
  </head>
<body>
<p><strong>Clear Old Entries</strong></p>
          <p>Clear Entries before</p>
<p><input type="text" id="datepicker"></p>
        <p><input type="submit" value="Clear Old" onClick="google.script.run.ClearOld(document.getElementById(datepicker).value)" /></p>
        <p><input type="button" value="Close Sidebar" onClick="google.script.host.close()" /></p>
</body>
</html>

以下是获取菜单项和侧边栏的脚本代码,以及我尝试用作短期测试的函数:

function onInstall(e) {
  onOpen(e);
}

function onOpen(e) {
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .createMenu('Bulletinator')
      .addItem('Create Bulletin', 'bulletinatorSidebar')
      .addItem('Clear Old', 'clearOldSideBar')
      .addToUi();
}

function bulletinatorSidebar() {
  var html = HtmlService.createHtmlOutputFromFile('BullV2Side')
      .setTitle('Bulletinator')
      .setWidth(300);
  SpreadsheetApp.getUi().showSidebar(html);
}

function clearOldSideBar() {
  var html = HtmlService.createHtmlOutputFromFile('ClearOldSide')
      .setTitle('Clear Old Entries')
      .setWidth(300);
  SpreadsheetApp.getUi().showSidebar(html);
}

var today;
var todayDay;
var todayDate;

var ui = SpreadsheetApp.getUi(); 
var sh = SpreadsheetApp.getActiveSheet();
var rg = sh.getDataRange();
var vA = rg.getValues();
var rowsFound = 0;
var rowsDeleted = 0;

function ClearOld(value) {
  var clearDate=value;
  var testThis = ui.alert(
 'Clear entries prior to',
 clearDate,
  ui.ButtonSet.YES_NO);

单击侧栏中的按钮时没有响应,执行记录中没有任何内容。

另一方面,我也很难在侧边栏中设置两个datePickers;只有一个工作。这就是为什么这个设置有两个单独的侧边栏被调用。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

似乎没有定义datepicker变量。你必须使用下一个代码

onClick="google.script.run.ClearOld(document.getElementById('datepicker').value)"

onClick="google.script.run.ClearOld($('#datepicker').val())"