Отображение двух элементов из двух разных файлов html на одной странице в Google App Scirpt - PullRequest
0 голосов
/ 04 мая 2020

Моя проблема заключается в том, как отображать элементы из двух разных файлов html на одной странице в скрипте Google App. У меня есть «index. html», который отображает две кнопки (которые запускаются всплывающими) на странице, и у меня также есть «table- html. html», который отображает таблицу, они работают на отдельных страницах, и они подключен к одному и тому же листу, однако я не могу понять, как отобразить их на одной странице - например, кнопки вверху страницы и таблицу под полями. Это мой сценарий. Main.gs:

function doGet(){
  var htmlTemplate = HtmlService.createTemplateFromFile("index");
  var html = htmlTemplate.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
  return html;
}


function include(filename){
  return HtmlService.createHtmlOutputFromFile(filename).getContent();

}

function doTable(){
  var htmlTemplate = HtmlService.createTemplateFromFile("table-html");
  var ss = SpreadsheetApp.openById("xx");
  var sheet = ss.getSheetByName("Options");
  var range = sheet.getDataRange();
  var values = range.getValues();
  htmlTemplate.data = values;
  var html = htmlTemplate.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
  return html;
}


function sheetUpdate(r,c,v){
  var ss = SpreadsheetApp.openById("xx");
  var sheet = ss.getSheetByName("Options");
  var range = sheet.getDataRange();
  var values = range.getValues();
  values[r][c] = v;
  range.setValues(values);
  var data = {
    'info':'Success! Changed value to: '+v
  };
  return data;
}

index. html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="css/bootstrap.min.css" rel="stylesheet">
  <link href="css/style.css" rel="stylesheet">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <style>
.box {
  width: 20%;
  margin: 0 auto;
  background: rgba(255,255,255,0.2);
  padding: 15px;
  border: 2px solid #000000;
  text-align: left;
}


.button:hover {
  background: #06D85F;
}

.overlay {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.7);
  transition: opacity 500ms;
  visibility: hidden;
  opacity: 0;
}
.overlay:target {
  visibility: visible;
  opacity: 1;
}

.popup {
  margin: 70px auto;
  padding: 20px;
  background: #fff;
  border-radius: 5px;
  width: 30%;
  position: relative;
  transition: all 5s ease-in-out;
}

.popup h2 {
  margin-top: 0;
  color: #333;
  font-family: Tahoma, Arial, sans-serif;
}
.popup .close {
  position: absolute;
  top: 20px;
  right: 30px;
  transition: all 200ms;
  font-size: 30px;
  font-weight: bold;
  text-decoration: none;
  color: #333;
}
.popup .close:hover {
  color: #06D85F;
}


@media screen and (max-width: 400px){
  .box{
    width: 30%;
  }
  .popup{
    width: 30%;
  }
}
</style>
</head>

<body>
  <div class="container-fluid">
      <div class="row">
            <div class="col-md-12">
                <div class="jumbotron">
                </div><!--jumbotron ends-->
            </div><!--col-md-12 ends-->
      </div><!--row ends-->

    <div class="row" style="width:80%;padding:3% 3% 3% 6%;">
      <div class="row postlist" style="font-size: 0.5rem;">

      </div>
    </div>
  </div>
    <script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src='https://cdnjs.cloudflare.com/ajax/libs/tabletop.js/1.5.1/tabletop.min.js'></script>
  <script src="js/jquery.min.js"></script>
  <script src="js/bootstrap.min.js"></script>
  <script src="js/scripts.js"></script>
  <script type='text/javascript'>

    var publicSpreadsheetUrl = 'https://docs.google.com/spreadsheets/d/xx/edit?usp=sharing';

    function init() {
      Tabletop.init( { key: publicSpreadsheetUrl,
                       callback: showInfo,
                       simpleSheet: true } )
    }
    function showInfo(data, tabletop) {

            for(var i=0;i<1; i++){
              $('.postlist').append('<div class="box"><a class="button" href="#popup1"><h2>'
                + data[i].CD+ '</p><p><b>Name:</b> ' + data[i].Name + '</p><p><b>Date:</b> '+ data[i].Date + '</p><p><b>Scope: </b>'+ data[i].Scope+'</h2></a></div><div id="popup1" class="overlay"><div class="popup"><h2>Custom Dimension: 50</h2><a class="close" href="#">&times;</a></div></div>');

            } 

          for(var i=1;i<2; i++){
              $('.postlist').append('<div class="box"><a class="button" href="#popup2"><h2>'
                + data[i].CD+ '</p><p><b>Name:</b> ' + data[i].Name + '</p><p><b>Date:</b> '+ data[i].Date + '</p><p><b>Scope: </b>'+ data[i].Scope+'</h2></a></div><div id="popup2" class="overlay"><div class="popup"><h2>Custom Dimension: 51</h2><a class="close" href="#">&times;</a></div></div>');
     }

      console.log(data);
}

    window.addEventListener('DOMContentLoaded', init)


  </script>
    <?!= include("table-html"); ?>
</body>

</html>

И table- html. html:

<script>
var datags = <?!= JSON.stringify(data) ?>;
console.log(datags);
</script>
<!DOCTYPE html>
<html>

<body> 
  <div class="container">
      <div id="flashMessage"></div>
      <div id="output"></div>
  </div>
  <script src = "https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
       $(function () {
            var row = '<table class="table">';
            for(var i=0;i < (datags.length); i++){
                   row+='<tr></tr>';
                for(var j=0;j < datags[i].length; j++){
                    if(datags[i][j]){
                          row=row+'<td ><input data-row ="'+i+'" data-col="'+j+'" type="text" value="'+datags[i][j]+'" class="dtValue"></td>';
                    }
               }
           }
           $('#output').html(row);
           $('#output').on('change','.dtValue',function(){
              console.log(this.dataset.row, this.dataset.col, this.value);
              google.script.run.withSuccessHandler(onSuccess)
             .sheetUpdate(this.dataset.row, this.dataset.col, this.value);
           });
        })

        function onSuccess(data) {
            $('#flashMessage').html('<div class="alert alert-success" role="alert">'+data.info+'</div>');
        }
   </script>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...