如何从外部脚本执行Google App脚本

时间:2019-06-13 13:04:04

标签: google-apps-script google-drive-api google-docs

我正在尝试构建一个Web应用程序,该应用程序将从模板创建Google文档,并使用用户提供的数据填充该文档。使用文档中的Google快速入门示例,我可以成功授权和访问Google云端硬盘文件系统。现在,我需要以编程方式打开一个模板Google文档(甚至从头开始创建一个)并添加数据。

使用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文档。我不知道如何从外部Web应用程序执行此应用程序脚本。有没有办法做到这一点,还是我需要找到一种仅使用Drive API创建Google文档(并添加内容)的方法?

编辑:

这是我的网络应用发出的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);   

}

1 个答案:

答案 0 :(得分:0)

为了从外部位置(如Web应用程序)运行脚本,您需要进行一些设置并使用Script API。下面提供的文档提供了一个很好的示例,说明如何从外部运行脚本。

此外,您可以直接使用这些API,而OAuth之类的服务则可以节省一些时间并使代码更简单,从而直接使用这些API。使用OAuth可以为您提供简单的API请求。要使用它:

  • 转到下面提供的链接,选择所需的范围(此示例为驱动器)。
  • 将授权令牌交换为刷新/访问令牌。
  • 继续配置请求。在这里,您可以设置请求的所有参数,甚至可以从范围可用的现有操作中进行选择(“列出可能的操作”按钮)。
  • 结果请求如下所示:

    获取/ drive / v3 / files HTTP / 1.1主机:www.googleapis.com内容长度: 0授权:不记名[您的代币]

  • 在它下面,您将看到服务器对请求的响应。

文档URL:https://developers.google.com/apps-script/api/how-tos/execute

OAuth游乐场:https://developers.google.com/oauthplayground/