Я пытаюсь создать веб-приложение, которое будет создавать Документ Google из шаблона и заполнять его данными, предоставленными пользователем.Используя пример быстрого запуска Google в документации, я могу успешно авторизоваться и получить доступ к файловой системе Google Диска.Теперь мне нужно программно открыть шаблон Google Doc (или даже создать его с нуля) и добавить данные.
Это довольно легко сделать с помощью службы документов App Script (класс DocumentApp
).Поэтому я могу сделать что-то вроде:
function createDoc(contentArray) {
var doc = DocumentApp.create('Sample Document');
var body = doc.getBody();
var rowsData = contentArray; // data submitted with HTML form passed as arg
body.insertParagraph(0, doc.getName())
.setHeading(DocumentApp.ParagraphHeading.HEADING1);
table = body.appendTable(rowsData);
table.getRow(0).editAsText().setBold(true);
}
в отдельном скрипте приложения и успешно создать новый Документ Google на Google Диске.Я не могу понять, как выполнить этот скрипт приложения из моего внешнего веб-приложения.Есть ли способ сделать это или мне нужно найти другой способ создания Google Документов (и добавления контента), используя только API Drive?
РЕДАКТИРОВАТЬ:
вот запрос GET из моего веб-приложения:
var gurl = "https://script.google.com/macros/s/AKfycbwMHKzfZr1X06zP2iEB4E8Vh-U1vGahaLjXZA1tk49tBNf0xk4/exec";
$.get(
gurl,
{ name: "john", time: "2pm",},
function(data) {
console.log(data);
},
"jsonp"
)
, а вот мой doGet()
:
function doGet(e) {
var result = "";
var name = e.parameter.name;
Logger.log(name);
try {
result = "Hello " + name;
} catch (f) {
result = "Error: " + f.toString();
}
result = JSON.stringify({
"result": result
});
var doc = DocumentApp.create('ballz3');
var body = doc.getBody();
var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']];
body.insertParagraph(0, doc.getName())
.setHeading(DocumentApp.ParagraphHeading.HEADING1);
table = body.appendTable(rowsData);
table.getRow(0).editAsText().setBold(true);
Logger.log('DOc Name: ' + doc.getName());
return ContentService
.createTextOutput(e.parameter.callback + "(" + result + ")")
.setMimeType(ContentService.MimeType.JAVASCRIPT);
}