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

use*_*534 5 pdf document google-apps-script

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

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

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

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

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

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

  ss.show(app); // Display the app
}
Run Code Online (Sandbox Code Playgroud)

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

PS作为附注,我发现(感谢stackoverflow)我需要使用驱动器地址,例如" https://drive.google.com/a/appsaccount.com/fileIdNumberOrWhatever ",但因为我是一个商业应用程序用户,有没有办法通过脚本获取此地址而不是硬编码?答:如果有人读到这个,你可以从以下网址获取网址:

 var downloadUrl = DriveApp.getFilesById('YourFileId').getDownloadUrl();
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)

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

3)然后我尝试将pdf转换为谷歌文档,然后打开文档并提取图像,显示它们.当您强制它将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;
}
Run Code Online (Sandbox Code Playgroud)

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

我的选择似乎是:

  1. 不要在我的手机上使用谷歌驱动器应用程序创建扫描,因为这会创建PDF.我可以只拍照片,但它们看起来不太好,操作起来也比较困难.但即便如此,有时我也无法避免收到PDF格式的收据
  2. 使用谷歌驱动器应用程序,但没有办法将其设置为将PDF扫描转换为谷歌文档,就像在网络上上传选项一样.一旦他们在网络上我找不到任何方式使用脚本将它们转换为谷歌文档,我甚至无法同时转换几个文件.我找到的唯一方法是全部下载,然后上传并将其设置为转换为谷歌文档.当我尝试使用所有谷歌产品创建一些东西时,这似乎是一种非常低效的方式
  3. 而不是使用UiApp,使用HTMLService创建它,然后我可以使用iframe,但我完全不知道html,我真的不想学习它只是为了做到这一点.

我上面做错了吗?或者是否有一个我想念的更简单的解决方案?这是非常令人沮丧的,因为所有功能似乎都存在,而不是通过脚本.或者因为答案在这里似乎不存在,这是否意味着我试图以一种无意的方式使用它?

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