Как передать 2D Array на Google-карту html - PullRequest
1 голос
/ 03 мая 2020

У меня есть 2D-массив, сгенерированный сценарием Google: [Steve, 2], [Bob, 101], [Anna, 78] et c.

  var t = HtmlService.createTemplateFromFile('ActivityChart'); // Modified
   t.DataForChart = (newdata_03);
   html = t.evaluate().setWidth(950).setHeight(600); // Added
   SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
   .showModalDialog(html,' ');

Мне нужно передать его :

 <!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
  google.charts.load("current", {packages:["corechart"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = google.visualization.arrayToDataTable([
      ['Task', 'Hours per Day'],      //need to replace it with my array
      ['Work',     11],               //need to replace it with my array
      ['Eat',      2],
      ['Commute',  2],
      ['Watch TV', 2],
      ['Sleep',    7]
    ]);

    var options = {
      title: 'My Daily Activities',
      is3D: true,
    };

    var chart = new google.visualization.PieChart(document.getElementById('piechart_3d'));
    chart.draw(data, options);
  }
</script>
</head>
<body>
<div id="piechart_3d" style="width: 900px; height: 500px;"></div>
</body>
</html>

Буду признателен, если вы поможете, потому что я очень слаб в html.

1 Ответ

2 голосов
/ 04 мая 2020

Я верю вашей ситуации и цели следующим образом.

  • Ваши HTML и Javascript в вашем вопросе - это файл ActivityChart.
  • В вашем сценарии: newdata_03 из t.DataForChart = (newdata_03); равно [["Steve", 2], ["Bob", 101], ["Anna", 78],,,].
  • Вы хотите отправить этот двумерный массив на сторону HTML и использовать его с google.visualization.arrayToDataTable.

Для это, как насчет этой модификации? В этой модификации используются скриптлеты. Пожалуйста, измените ActivityChart вашего HTML & Javascript следующим образом. В этом случае я не изменял сторону скрипта Google Apps.

С:

var data = google.visualization.arrayToDataTable([
  ['Task', 'Hours per Day'],      //need to replace it with my array
  ['Work',     11],               //need to replace it with my array
  ['Eat',      2],
  ['Commute',  2],
  ['Watch TV', 2],
  ['Sleep',    7]
]);

До:

<? const str = JSON.stringify(DataForChart); ?>
let ar = JSON.parse(<?= str ?>);
ar.unshift(["header1", "header2"]);
var data = google.visualization.arrayToDataTable(ar);

Примечание:

  • Исходя из вашего вопроса, я подумал, что двумерный массив может не иметь строки заголовка. Поэтому я добавил строку заголовка, используя ar.unshift(["header1", "header2"]). Если ваши данные включают строку заголовка, удалите это.

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...