显示/转换PDF文档和Google Apps脚本

时间:2013-12-13 01:15:14

标签: pdf google-apps-script document

我一直在尝试学习谷歌应用程序脚本,以减少我对宏的依赖。我一直试图通过创造一些东西来学习它。我有一半使用电子表格创建了一个双重记账系统,因此我可以自动创建发票,记录费用并协调银行交易。

我陷入困境的一点是导入费用收据。我一直在手机上使用谷歌驱动器应用程序扫描收据,生成PDF格式并上传到谷歌驱动器。这是一个方便的应用程序,因为它很容易调整大小,重命名和上传。

我想要的是创建一个脚本,它将从文件夹中拾取文件(图像或pdf),并在屏幕的一侧显示文件,然后有日期,类别,数量等字段,我可以在一个屏幕上阅读它们并输入所有数据。图像很容易,但我无法弄清楚如何用PDF格式化。这是我试过的:

1)在UiApp中将pdf作为图像打开

function openPdfAsImage(pdfUrl) {
  var app = UiApp.createApplication();

  app.add(app.createImage(pdfUrl));

  ss.show(app); // Display the app
}

这不够公平,不是图像。尝试将其转换为blob然后再转换为图像不起作用,因为我无法将pdf blob转换为图像blob。

PS作为附注,我发现(感谢stackoverflow)我需要使用驱动器地址,例如“https://drive.google.com/a/appsaccount.com/fileIdNumberOrWhatever”,但由于我是商业用户的应用程序,有什么方法可以获得这个通过脚本而不是硬编码来解决它? 答:如果有人读到这个,你可以从以下网址获取网址:

 var downloadUrl = DriveApp.getFilesById('YourFileId').getDownloadUrl();

2)然后我尝试嵌入文档,因为查看器有一个选项可以获取iFrame的代码。我试过这个:

function openPdfAsImage(pdfUrl) {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var app = UiApp.createApplication();
  app.add(app.createHTML('<iframesrc="https://docs.google.com/a/appsaccount.com/file/d/0BxQjxnVa4KJffHaFBDsTzVUNCTDQ/preview" width="640" height="480"></iframe>'));
  ss.show(app); // Display the app
}

但唉,这不起作用,因为它似乎不允许iframe

3)然后我尝试将pdf转换为google文档,然后打开文档并提取图像,显示它们。当您强制它将pdf作为文档打开时,它可以通过Web工作,它将pdf转换为google doc并在第一页上显示图像并尝试在第二页上重建文本。我试过了:

function getImagesFromPdf(pdfId) {
  // Open the pdf as a document, I hoped this would convert the file and put an
  // image into the google doc the same as if you open it via the web browser

  var pdfAsDoc = DocumentApp.openById(pdfId); // Instead it causes an error

  // Get the images out of the document
  var docImages = pdfAsDoc.getBody().getImages();

  return docImages;
}

但是即使这样也行不通,当你尝试打开pdf时它只会导致错误。即使它确实有效,我也必须将图像保存回谷歌驱动器,获取URL的谷歌驱动器版本,以便它可以在UiApp中显示。不知道为什么我不能将Image对象传递给UiApp。

我的选择似乎是:

  1. 请勿在我的手机上使用google drive app来创建扫描 创建pdfs。我可以拍照而不是看 同样好,操作起来更难。但即便如此,有时我也无法避免收到pdf收据
  2. 使用google云端硬盘应用,但无法将其设置为转换 pdf扫描到谷歌文档,就像有选项 在网上上传。一旦他们在网上我找不到任何方法 使用脚本将它们转换为谷歌文档,我甚至无法转换 几个文件同时。我发现的唯一方法是 全部下载,然后上传并将其设置为转换为谷歌 文档。当我这样做时,这似乎是一种非常低效的方式 尝试使用所有谷歌产品创建一些东西
  3. 不使用UiApp,而是使用HTMLService创建它,以便我可以 使用iframe,但我对html一无所知,但我不知道 为了做到这一点,我真的很想学习它。
  4. 我上面做错了吗?或者是否有一个我想念的更简单的解决方案?这是非常令人沮丧的,因为所有功能似乎都存在,而不是通过脚本。或者因为答案在这里似乎不存在,这是否意味着我试图以一种无意的方式使用它?

    非常感谢任何帮助/指导/建议。

0 个答案:

没有答案