首页 > 解决方案 > 在 Google 电子表格中显示输入框后脚本未执行代码 - 如何在获取用户输入后运行代码

问题描述

对编码和概念非常陌生。这段代码还不是我想要的,但对于这个例子来说已经足够好了。它将一个递增的数字添加到下一个填充的行。

    function onFormSubmit(e) {

var sheet = SpreadsheetApp.getActiveSheet();
var row =  SpreadsheetApp.getActiveSheet().getLastRow();

sheet.getRange(row,1).setValue(row);
}

这部分增加了一个菜单选项PROCESS,允许用户在菜单中选择Next Order。而且我想我明白我正在命名一个自定义函数 nextOpenOrder 以供下一步使用...

    function onOpen(e) {
  SpreadsheetApp.getUi()
      .createMenu('PROCESS')
      .addItem('Next Order', 'nextOpenOrder')
      .addToUi();
}

这是我的自定义函数,它会抛出一个浏览器框,提示用户输入由第一位代码生成的下一个订单号。

    function nextOpenOrder() {
  var spreadsheet = SpreadsheetApp.getActive();
  var settingsSheet = spreadsheet.getSheetByName('FormResponses3');
  settingsSheet.activate();
  var selectedRow = Browser.inputBox('Create Parts Order',
      'Please enter the Order ID# to use' +
      ' (for example, "2"):',
      Browser.Buttons.OK_CANCEL);
}

但下一步是抛出一个 html 或 pdf 文档。最终的意图是显示一行的数据,以便最终用户可以在另一个软件中输入零件订单。我已经想出了如何使通用面板呈现出来。

function showDialog() {
  var html = HtmlService.createHtmlOutputFromFile('INDEX')
      .setWidth(400)
      .setHeight(300);
  SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
      .showModalDialog(html, 'My custom dialog');
}

我的 INDEX.html 代码:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    Hello, World!    
  </body>
</html>

然而,我似乎无法解决的问题是最后一段代码不能自行执行。我可以从脚本页面运行它,它会显示一个带有消息的对话框。但是当我点击 PROCESS 并选择订单 # 时,它不会自动发生。
我敢肯定,这很简单,因为我对此很陌生。有人可以推动我前进吗?

标签: htmlgoogle-apps-scriptgoogle-sheetssidebar

解决方案


推荐阅读