将Google文档作为HTML获取

Ray*_*ins 11 google-docs google-apps-script

我有一个疯狂的想法,我可以为一个不熟练的用户朋友建立一个网站博客,使用Google Drive Documents来支持它.我能够创建一个编译文档列表的contentService.但是,我看不到将文档转换为HTML的方法.我知道Google可以在网页中呈现文档,所以我想知道是否有可能获得在我的内容服务中使用的呈现版本.

这可能吗?

St3*_*3ph 19

你可以试试这段代码:

  function getGoogleDocumentAsHTML(){
  var id = DocumentApp.getActiveDocument().getId() ;
  var forDriveScope = DriveApp.getStorageUsed(); //needed to get Drive Scope requested
  var url = "https://docs.google.com/feeds/download/documents/export/Export?id="+id+"&exportFormat=html";
  var param = {
    method      : "get",
    headers     : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
    muteHttpExceptions:true,
  };
  var html = UrlFetchApp.fetch(url,param).getContentText();
  Logger.log(html);
}
Run Code Online (Sandbox Code Playgroud)


小智 6

谷歌文档目前有一个函数可以做到这一点。只需下载到 zip(.html),您就可以获得包含 html 和图像的 zip 存档(如果已插入)

我知道这不是基于代码的解决方案,但它的工作原理:)

导出菜单


Der*_*ike 5

Node.js 解决方案

使用Google APIs Node.js 客户端

以下是如何使用谷歌驱动器的 node.js 客户端库获取 html 格式的谷歌文档。

// import googleapis npm package
var google = require('googleapis');

// variables
var fileId = '<google drive doc file id>',
    accessToken = '<oauth access token>';

// oauth setup
var OAuth2 = google.auth.OAuth2,
    OAuth2Client = new OAuth2();

// set oauth credentials
OAuth2Client.setCredentials({access_token: accessToken});

// google drive setup
var drive = google.drive({version: 'v3', auth: OAuth2Client});

// download file as text/html
var buffers = [];
drive.files.export(
    {
        fileId: fileId,
        mimeType: 'text/html'
    }
)
    .on('error', function(err) {
        // handle error
    })
    .on('data', function(data) {
        buffers.push(data); // data is a buffer
    })
    .on('end', function() {
        var buffer = Buffer.concat(buffers),
            googleDocAsHtml = buffer.toString();
        console.log(googleDocAsHtml);
    });
Run Code Online (Sandbox Code Playgroud)

查看Google Drive V3 下载文档以了解更多语言和选项。


Ser*_*sas 4

GAS 中没有直接方法来获取文档的 HTML 版本,这是一个相当古老的增强请求,但Henrique Abreu最初描述的解决方法效果很好,我一直使用它......

授权过程中唯一烦人的事情需要从脚本编辑器调用,这使得在共享应用程序中使用变得困难(对于“无法使用脚本”的用户),但这只会发生一次;)。

还有一个由Romain Vialard创建的,它使事情(有点)变得更容易......并添加了一些其他有趣的功能。

  • 我很想回顾一下您在 @HenriqueAbreu 中提到的解决方法,但该链接不再可用:它是否在其他地方发布?——谢谢,福斯托 (5认同)