[英]Retrieve linked URL from text in a Google Document using Google Apps Script
[英]Retrieve revision text through Google Apps Script
我正在嘗試通過 Google Apps Script 獲取文檔的修訂歷史記錄,並且正在尋找有關如何以編程方式訪問修訂內容的一些建議。
使用 Drive API,我可以訪問文檔上的一系列修訂並根據用戶進行迭代。 返回的對象不包括修訂的內容,只是一個 ID。 但是,您可以獲得各種內容類型(pdf、純文本等)的下載 URL。
我想使用UrlFetchApp
檢索下載 URL 並將該內容附加到文檔中。 問題是 fetch 應用程序返回整個文檔標記(HTML 和 CSS),而我只想要文件的內容。
腳本
function revisionHistoryLite() {
var doc = DocumentApp.getActiveDocument();
var eds = doc.getEditors();
var body = doc.getBody();
var revs = Drive.Revisions.list(doc.getId())
var editsList = [];
for(var i=0; i<revs.items.length; i++) {
var revision = revs.items[i];
editsList.push([revision.id, revision.kind, revision.modifiedDate, revision.lastModifyingUser.emailAddress]);
if(revision.lastModifyingUser.emailAddress == "bbennett@elkhart.k12.in.us") {
var revUrl = Drive.Revisions.get(doc.getId(), revision.id).exportLinks["text/plain"];
// revUrl returns https://docs.google.com/feeds/download/documents/export/Export?id=docIdString&revision=1&exportFormat=txt
var revString = UrlFetchApp.fetch(revUrl, { contentType: "text/plain", }).getContentText();
Logger.log(revString); // Contains full HTTP markup
// Append the body contents to a temporary document for further processing
// var tempDoc = DocumentApp.create("Temp").getBody().appendParagraph(revString);
}
}
}
當它使用UrlFetchApp.fetch()
從 exportLinks 下載文件時,需要授權。 因此,請按如下方式修改您的腳本。
var revUrl = Drive.Revisions.get(doc.getId(), revision.id).exportLinks["text/plain"];
var revString = UrlFetchApp.fetch(revUrl, { contentType: "text/plain", }).getContentText();
var revUrl = Drive.Revisions.get(doc.getId(), revision.id).exportLinks["text/plain"] + "&access_token=" + ScriptApp.getOAuthToken();
var revString = UrlFetchApp.fetch(revUrl).getContentText();
這樣,您可以從修訂數據中下載文本數據。
function revisionHistoryLite() {
var doc = DocumentApp.getActiveDocument();
var eds = doc.getEditors();
var body = doc.getBody();
var revs = Drive.Revisions.list(doc.getId())
var editsList = [];
for(var i=0; i<revs.items.length; i++) {
var revision = revs.items[i];
editsList.push([revision.id, revision.kind, revision.modifiedDate, revision.lastModifyingUser.emailAddress]);
if(revision.lastModifyingUser.emailAddress == "### mail address ###") {
var revUrl = Drive.Revisions.get(doc.getId(), revision.id).exportLinks["text/plain"] + "&access_token=" + ScriptApp.getOAuthToken();
var revString = UrlFetchApp.fetch(revUrl).getContentText();
Logger.log(revString); // Contains full HTTP markup
}
}
}
從 2020 年 1 月起,訪問令牌不能與諸如access_token=###
類的查詢參數一起使用。 Ref所以請使用訪問令牌到請求頭而不是查詢參數。 如下。
var res = UrlFetchApp.fetch(url, {headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.