我想下载一个有关运行应用程序脚本的 pdf 格式的 google 文档文件。
//Code.gs
function run() {
const documentId = 'somDocId';
try {
// Get the document using document id
const doc = Docs.Documents.get(documentId);
createPDF(doc.title);
} catch (err) {
// TODO (developer) - Handle exception from Docs API
console.log('Failed to found document with an error %s', err.message);
}
}
function createPDF(pdfName) {
const url = "https://docs.google.com/document/d/somDocId/export?format=pdf";
const params = { method: "GET", headers: { "authorization": "Bearer " + ScriptApp.getOAuthToken() } };
const blob = UrlFetchApp.fetch(url, params).getBlob().setName(pdfName + '.pdf');
// below instead of saving to drive, I want to directly download in current window
const folder = getFolderByName_("someFolder");
folder.createFile(blob);
}
run();
我也遇到以下错误
Failed to found document with an error Request failed for https://docs.google.com returned code 401. Truncated server response: <!DOCTYPE html><style...
我认为在您的显示脚本中,当
documentId
和 url
和 folder
是有效值时,您的脚本工作正常,同时由于全局的 run();
而创建了 2 个 PDF 文件。因此,从您的以下显示错误消息来看,
无法找到带有错误的文档 https://docs.google.com 的请求失败,返回代码 401。服务器响应被截断:
如果
documentId
是无效值,我认为会发生像Requested entity was not found.
这样的错误。所以,你的显示脚本,我想 documentId
是一个有效值。而且,如果 url
是无效值,我猜您会显示错误消息。所以,我担心你可能会直接使用https://docs.google.com/document/d/somDocId/export?format=pdf
的URL。如果我的理解正确的话,下面的修改如何?
请将您的有效 Google 文档 ID 设置为
documentId
。并且,运行函数run()
。这样,脚本就运行了。
function run() {
const documentId = 'somDocId';
try {
const doc = Docs.Documents.get(documentId);
createPDF(doc.title, documentId); // Modified
} catch (err) {
console.log('Failed to found document with an error %s', err.message);
}
}
function createPDF(pdfName, documentId) { // Modified
const url = `https://docs.google.com/document/d/${documentId}/export?format=pdf`; // Modified
const params = { method: "GET", headers: { "authorization": "Bearer " + ScriptApp.getOAuthToken() } };
const blob = UrlFetchApp.fetch(url, params).getBlob().setName(pdfName + '.pdf');
const folder = getFolderByName_("someFolder");
folder.createFile(blob);
}
// run(); // Removed.
getFolderByName_
未显示。在此修改中,假设函数 getFolderByName_
已在其他地方声明,并返回有效值。请注意这一点。