Впервые публикую здесь, и я учусь как go с Javascript и возможностями сценариев Google, поэтому извиняюсь, если я недостаточно ясен или пропустил еще одну ветку с ответом, похожим на мой.
Просто чтобы дать небольшую справку о том, что я пытаюсь сделать на случай, если я пропустил более простое решение. Я работаю над скриптом Google, создающим сводный отчет для Google do c из отправки формы Google для клиента, и он хотел бы получить график, включающий краткое изложение нескольких вариантов линейного масштаба, поэтому мне нужно найти способ сгенерировать диаграмму, вывести ее в файл (или получить blob) и затем вставляем в аннотацию do c. Сначала я посетил Charts API (изнутри скрипта Google), который, кажется, больше подходит для метода, к которому я стремлюсь, но визуализация кажется довольно ограниченной, поэтому с тех пор я перешел к исследованию html на основе Версия диаграммы google.visualisation, которая дает лучшие результаты.
На сегодняшний день мне удалось создать веб-приложение Google, которое выводит прилично выглядящую диаграмму для моих целей (пока я использую плоские данные, пока я ' m, тестирующий материал) и вывод на место на диске Google для последующего перехода в Google do c (код ниже), который отлично работает, когда я открываю приложение-скрипт в своем браузере. Проблема, с которой я сталкиваюсь, заключается в том, что это часть более широкого рабочего процесса. Я пытаюсь понять, как запустить создание диаграммы, запустив ее как функцию в моем более широком сценарии или используя функцию UrlFetchApp для вызова существующее веб-приложение для построения диаграммы с использованием запроса на получение, что, похоже, не нравится сценарию ... лучшее, что я могу понять, это то, что он выплевывает html из веб-приложения, но не запускает функции в приложении , и я не могу понять, является ли это преднамеренной блокировкой со стороны Google или я неправильно вызываю скрипт для запуска генерации диаграммы.
Извините, если я не очень хорошо объяснил это, и Я счастлив, если я пропустил какие-либо биты, но я был бы признателен за любую помощь в этом, если кто-то преодолеет подобную проблему.
Спасибо, Найл
Код: Скрипт. js
function doGet(e) {
var template = HtmlService.createTemplateFromFile('html');
return template.evaluate('Web App Window Title').setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}
function doSomething(base64Blob) {
strDataURI = base64Blob.replace("data:image/png;base64,", "");
var str = Utilities.base64Decode(strDataURI);
var fileBlob = Utilities.newBlob(str).setContentType('image/png').setName("graph.png");
var file = DriveApp.createFile(fileBlob);
}
html. html
<html>
<head>
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
// Load the Visualization API and the piechart package.
google.charts.load('current', {'packages':['corechart']});
runDrawChart();
// Set a callback to run when the Google Visualization API is loaded.
function runDrawChart() {
google.charts.setOnLoadCallback(drawChart);
}
// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawChart() {
// Create the data table.
var data = new google.visualization.DataTable();
data.addColumn('string', 'EXCERCISE');
data.addColumn('number', 'SCORE');
data.addRows([["1. Call", 5],
["2.1. Character A-1", 3],
["2.1. Character A-2", 1.2],
["2.2. Character B", 4.3],
["3. Chemistry", 6.7],
["4.1. Competencies-1", 9.3],
["4.2. Competencies-2", 8.9],
["4.3. Competencies-3", 4.5],
["4.4. Competencies-4", 2],
["4.5. Competencies-5", 1.4],
["4.6. Competencies-6", 8.7],
["4.7. Competencies-7", 5],
["4.8. Competencies-8", 7.4],
["4.9. Competencies-9", 9],
["4.10. Competencies-10", 3.3]]);
// Set chart options
var options = {
width: 1200,
height: 700,
bar: {groupWidth: "22%"},
fontSize: 22,
legend: { position: "none" },
chartArea:{left:600,right:20,top:0,bottom:50,width:'100%',height:'100%'}
};
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
google.visualization.events.addListener(chart, 'ready', function () {
chart_div.innerHTML = '<img src="' + chart.getImageURI() + '">';
google.script.run.doSomething(chart.getImageURI());
});
chart.draw(data, options);
}
</script>
</head>
<body> //Div that will hold the pie chart <div id="chart_div" style="width:400; height:300"
></div>
</body>
</html>
А вот код другой функции, которую я попытался вызвать, чтобы получить изображение диаграммы:
function doGet(e) {
try {
var url = 'https://script.google.com/macros/s/[ID]]/exec';
var options = {
"method": "GET",
"followRedirects": true,
"muteHttpExceptions": true
};
var result = UrlFetchApp.fetch(url, options);
}
catch (e) {
Logger.log(e);
}
Logger.log(result);
}