新的HTMLService参数传递

时间:2015-02-14 15:36:47

标签: google-apps-script

我很难弄清楚如何使用Google Apps脚本传递参数。具体来说,这是SpreadsheetApp服务中的对话框。这是我想要完成的一个简单的代码:

function confirmation() {
    var a = 6;
    var b = 7;
    var HTMLoutput = 'Would you like to add these numbers?';
    HTMLoutput += '<input type="button" value="Yes" ';
    HTMLoutput += 'onclick="google.script.run.confirmed(a, b)" />';
    HTMLoutput += '<input type="button" value="No" ';
    HTMLoutput += 'onclick="google.script.host.close()" />';

    SpreadsheetApp.getUi().showModalDialog(
        HtmlService.createHtmlOutput(HTMLoutput), '');
}

function confirmed(a, b) {
    Logger.log(a+b);
}

由于某种原因,参数未通过。我有一种感觉,它与变量在String中的方式有​​关。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您有时可以使用append

,而不是为所有HTML使用大量文本公式
var HTMLoutput = '';
HTMLoutput.append("<div>This is appended HTML</div>");

文本公式很难理解和调试。你仍然需要使用它们,但也许这会使它更容易。

onclick事件需要引用HTML中的代码。现在,它指向谷歌脚本。也许试试这个:

onclick="confirmed(a, b)"

整个代码将是

function confirmation() {
  var a = 6;
  var b = 7;
  var HTMLoutput = '';

  HTMLoutput += '<script>function confirmed(' + a + "," + b + ') {' +
  'Logger.log(a);' +
  'Logger.log(b);' +
  'google.script.run.confirmed(a, b);' +
  'google.script.host.close();}</script>'


  HTMLoutput += '<input type="button" value="Yes" ';
  HTMLoutput += 'onclick="confirmed(a, b)" />';
  HTMLoutput += '<input type="button" value="No" ';
  HTMLoutput += 'onclick="google.script.host.close()" />';

  SpreadsheetApp.getUi().showModalDialog(
    HtmlService.createHtmlOutput(HTMLoutput), '');
}

gs code

function confirmed(a, b) {
  //code here
};

请注意,您有两个名为confirmed的函数,一个在HTML中,另一个在.gs服务器代码中。