19

Google ドライブ ドキュメントを使用して、洗練されていないユーザーの友人のためにウェブサイト ブログを作成できるという突飛なアイデアがありました。ドキュメントのリストをコンパイルする contentService を作成できました。ただし、ドキュメントを HTML に変換する方法がわかりません。Google が Web ページ内のドキュメントをレンダリングできることは知っているので、コンテンツ サービスで使用するためにレンダリングされたバージョンを取得できるかどうか疑問に思いました。

これは可能ですか?

4

8 に答える 8

5

Node.js ソリューション

Google API Node.js クライアントの使用

Google ドライブの node.js クライアント ライブラリを使用して Google ドキュメントを 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);
    });

その他の言語とオプションについては、Google ドライブ V3 ダウンロード ドキュメントをご覧ください。

于 2017-01-04T19:01:29.187 に答える
4

GAS にはドキュメントの HTML バージョンを取得するための直接的な方法はありません。これはかなり古い拡張要求ですが、 Henrique Abreu によって最初に説明された回避策はかなりうまく機能し、私は常にそれを使用しています...

承認プロセスでスクリプト エディターから呼び出す必要がある唯一の煩わしいことは、共有アプリケーション (「スクリプトを実行できない」ユーザーの場合) での使用を不安にさせますが、これは 1 回しか発生しません;)。

Romain Vialardによって作成されたLibraryもあります。これにより、物事が (少し) 簡単になり、他にもいくつかの興味深い機能が追加されます。

于 2013-02-02T17:22:14.523 に答える
4

Enrique によって投稿されたアイデアに従って、goole AOuth の新しいバージョンを少し切り取ったものを次に示します。

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

}

次に、通常の mailApp を使用します。

function mailer(){
   var docbody = exportAsHTML();
   MailApp.sendEmail({
     to: "email@mail.com",
     subject: "document emailer",
     htmlBody:  docbody  });
}

新しい回避策が役立つことを願っています

JD

于 2016-03-24T10:23:10.637 に答える
-3

おそらくこれはあなたのために働くでしょう...

function doGet() {
  var blob = DriveApp.getFileById('myFileId').getAsHTML();
  return HtmlService.createHtmlOutput(blob);
}
于 2013-02-03T15:41:58.797 に答える