我从在Google脚本(应用程序脚本)中绑定到工作表中的Java脚本开始. 我成功地在侧边栏中打开了html. 此外,我还添加了一个稍后要使用的参数,以形成模板对象.

//OPEN THE FORM IN SIDEBAR with argument passed to formTemplate
function showFormInSidebar(argument ='I want pass this') { 
  let htmlName = 'Index'
  var htmlTemplate = HtmlService.createTemplateFromFile(htmlName)
  htmlTemplate.argument = argument;
  var html = htmlTemplate.evaluate();  
  SpreadsheetApp.getUi().showSidebar(html);
}

接下来,我使用index.html. 我可以在那里读到我的论点和一些谷歌脚本的东西,测试1是好的.

然后,我判断是否可以从我的第二个Java脚本函数--est2中看到一个操作.我可以通过点击(或点击‘Load’事件)来运行它.这个很好用.

主要问题是如何在第二个JS中获取参数值? 直接Arg传球不起作用.无论如何,secudaryJS中的参数只是一个事件对象.那里有大量的数据,但我最初的论点是找不到的.

<!DOCTYPE html>
<html>
  <head>
    <script>
      window.addEventListener('click', secondaryJS); 
      function secondaryJS(event){                 
        console.log('look event', event);
        document.getElementById("mytest2").innerHTML = 'This is replacing ok'
    // Wish to make some operations here, like
   let processedResult = argument + 'some more'
        document.getElementById("mytest3").innerHTML = '???? want pass result from here, using initial argument inside of this function'
      }
    </script>
  </head>

  <body>
    <p>test1, reading argument from htmlTemplate.argument, ok:</p>
    <p><?!= argument ?></p>

    <p>test2:</p>    
    <p id = "mytest2">Must be replaced from secondaryJS with string value after page load, ok</p>

    <p>test3:</p>
    <p id = "mytest3">Must be replaced from secondaryJS with result which is initial argument processed in an event listener function, NOTok</p>    
  </body>
</html>

推荐答案

看起来你在找这个:

<!DOCTYPE html>
<html>
  <head>
    <script>
      window.addEventListener('click', secondaryJS); 
      function secondaryJS(event){                 
        console.log('look event', event);
        let initialParam = '<?!= argument ?>';
        let result = ''; //I initialize this variable here, but you can override this with your actual processing
        /*
            Do some processing with initialParam
            I will assume that you are storing the result
            of this processing into a variable called result
        */
        document.getElementById("mytest2").innerHTML = 'This is replacing ok'
        document.getElementById("mytest3").innerHTML = result;
      }
    </script>
  </head>

  <body>
    <p>test1, reading argument from htmlTemplate.argument, ok:</p>
    <p><?!= argument ?></p>

    <p>test2:</p>    
    <p id = "mytest2">Must be replaced from secondaryJS with string value after page load, ok</p>

    <p>test3:</p>
    <p id = "mytest3">Must be replaced from secondaryJS with argument passed from event listener function, NOTok</p>    
  </body>
</html>

您只需将您的论点作为一个值,就像您在第一个测试中所做的那样.

Javascript相关问答推荐

为什么我的第二个OnClick Isloading值在TEK查询Mutations 查询中不起作用?

当在select中 Select 选项时,我必须禁用不匹配的 Select

如何用显示网格平滑地将元素从一个地方移动到另一个地方?

Angular:动画不启动

如何粗体匹配的字母时输入搜索框使用javascript?

切换时排序对象数组,切换不起作用

我在我的Java代码中遇到了问题,代码的一部分看不到先前定义的对象

如何通过使用vanilla JS限制字体大小增加或减少两次来改变字体大小

如何将数据块添加到d3力有向图中?

如何将数组用作复合函数参数?

Reaction Redux&Quot;在派单错误中检测到状态Mutations

在画布中调整边上反弹框的大小失败

更新Redux存储中的对象数组

在查看网页时,如何使HTML中的按钮工作方式类似于鼠标上的滚轮或箭头键?

我正在试着做一个TicTacToe Ai来和我玩.但是,我试着在第一个方块被点击时出现一个X,然后在第二个方块之后出现一个O

不协调嵌入图片

如果我的列有条件,我如何呈现图标?

在单击按钮时生成多个表单时的处理状态

TypeORM QueryBuilder限制联接到一条记录

如何在加载页面时使锚定标记成为焦点