将变量从Google脚本传递到html

时间:2018-10-23 20:30:25

标签: html google-apps-script

我正在尝试根据电子表格中生成的随机数播放视频。由于Google表格不允许您直接嵌入youtube视频,因此我尝试通过自定义对话框来实现。

这是我到目前为止所拥有的:

Google脚本代码

    var PlayDes = sheet.getRange('g2').getValue();
    GameSheet.getRange('D4').setValue(TotYds1)
     var html = HtmlService.createHtmlOutputFromFile('Youtube')
        .setWidth(560)
        .setHeight(315);
    SpreadsheetApp.getUi() 
       .showModalDialog(html, PlayDes);

然后,HTML代码为:

    <iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/7WSQGD874Yc?start=8&end=18" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<input type="button" value="Close" onclick="google.script.host.close()" />

我希望基于从电子表格中单元格G2提取的值来更改html代码中的视频URL。

2 个答案:

答案 0 :(得分:1)

感谢@JSmith的帮助,这是我找到的解决方案... Google脚本端

 function retrieveValue(){
  spreadsheet = SpreadsheetApp.openById('sheet ID')
  sheet = spreadsheet.getSheetByName('Data')
  var PlayDes = sheet.getRange('g2').getValue();
 return (sheet.getRange('g2').getValue());

然后在html端

<script>
  //*********************************** retrieve the URL from spreadsheet**********************************
var myValue
  function Vidurl(value)
  {
   myValue=value
   document.write('<iframe width="560" height="315" src= '+myValue+' frameborder="0" allow="autoplay; encrypted-media" allowfullscreen><\/iframe>');
  }
  google.script.run.withSuccessHandler(Vidurl).retrieveValue(); 
</script>

我遇到的一个问题是浏览器不喜欢我的脚本,并将其标记为危险脚本,然后我不得不越过它。

答案 1 :(得分:0)

假设您的手机是g2

在您的IDE中创建脚本,如下所示:

function retrieveValue()
{
  ...//grab spreadsheet and sheet
  return (sheet.getRange('g2').getValue());
}

然后在您的HTML客户端上这样调用它:

 <iframe id="myVideo" width="560" height="315" src="NEED VARIABLE HERE" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
    <script>
      var myValue = null;
      function onSuccess(value)
      {
        $("#myVideo").attr('src', value);
      }
      google.script.run.withSuccessHandler(onSuccess).retrieveValue();
    </script>

注意

google.script.run是一个异步调用,因此您必须等待该调用完成才能在客户端获得所需的值。