在Google表格单元格中的电子邮件值中填充HTML表单上的电子邮件输入

时间:2017-11-16 21:07:59

标签: javascript html google-apps-script

我已在google的html编辑器中创建了一个弹出式电子邮件对话框,其中包含如下电子邮件输入:

<input type="email" name="email" class="form-control" id="mail" aria-describedby="emailHelp" value="">

在我的.gs文件中,我存储了包含我想要使用的电子邮件地址的单元格的值,如下所示:

function getEmail()
 {
   var s=SpreadsheetApp.getActive().getSheetByName("Template");
   var row=15;
   var column=3;
   var contactAddress=Utilities.formatString('%s',s.getRange(row, column).getValue());
   Logger.log(contactAddress);
 }

这很好用,正确捕获电子邮件地址并记录它。我现在需要改变价值&#39;我的电子邮件输入,以便在diolog打开时填充此地址。所以我的HTML文件中有以下内容:

window.onload = function (contactAddress)
{
   document.getElementById('mail').value=contactAddress;
}

然而,这导致了[对象事件]&#39;被填充。我觉得我离这儿很近但不能完全接受它!!!!

更新:

所以我把它添加到我的.gs:

function showDialog() {
  var html = HtmlService.createHtmlOutputFromFile('emailTemplate')
  .setWidth(800)
  .setHeight(500);
  html.myvar = new getEmail();
  html.evaluate().getContent();
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
  .showModalDialog(html, ' ');
 }

但是,当我运行脚本时,我收到一条错误,指出Object不允许添加或更改属性。

1 个答案:

答案 0 :(得分:0)

编辑:原始答案已删除。

所以这是我对你的问题的答案。测试了它,它的工作原理。

我的HTML页面设置如下,只是为了测试它:

Foo Bar> some_rev_list 
RevisionList {theList = [1,4,2,5], revision = 2}

我的.gs文件包含

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
    function onSuccess(contact) {
     //var contactAddress = google.script.run.getEmail();
        document.getElementById('mail').value=contact;
    }

    google.script.run.withSuccessHandler(onSuccess).getEmail();
    </script>
  </head>
  <body>
    <input type="email" name="email" class="form-control" id="mail" aria-describedby="emailHelp" value="">

  </body>
</html>

唯一真正的区别是我添加了一个return语句(并为我的测试将行从15更改为1)。

似乎主要问题是你如何在HTML页面上调用该函数。它需要function getEmail() { var s=SpreadsheetApp.getActive().getSheetByName("Sheet1"); var row=1; var column=3; var contactAddress=Utilities.formatString('%s',s.getRange(row, column).getValue()); Logger.log(contactAddress); return contactAddress; } 来电而不是google.script.run.withSuccessHandler()来电。