【问题标题】:Can I either download a sheet to a specific computer hard drive, or move a sheet in Backup and Sync to the hard drive?我可以将工作表下载到特定的计算机硬盘驱动器,或者将备份和同步中的工作表移动到硬盘驱动器吗?
【发布时间】:2021-01-25 19:40:13
【问题描述】:

专家,感谢您抽出宝贵时间!

触发 google 脚本时,我需要将表格文件自动下载到特定计算机上的特定文件夹中。我可以想到两种可能的方法:

  1. 直接从表格/驱动器下载文件(模拟“下载为...”菜单项)。

  2. 复制所需文件(已在相关本地计算机的 Google Drive 文件夹中,由 Google Backup and Sync 提供),然后从 Google Drive 文件夹中删除源文件。

这两种方法都可以吗?

目前,我正在向我的 Gmail 发送一个 pdf 文件,但我想在我的计算机上获取该 pdf 文件并完全绕过 Gmail。

我找到了一个脚本(谢谢 Tanaike),但无法让它工作。这是一个副本:

function downloadSheetAsPDF2() {
  var filename = "sampleFile.pdf"; // Please set the filename here.

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetId = ss.getActiveSheet().getSheetId();

  // Creat PDF file as a temporary file and create URL for downloading.
  var url = "https://docs.google.com/a/mydomain.org/spreadsheets/d/" + ss.getId() + "/export?exportFormat=pdf&gid=" + sheetId + "&access_token=" + ScriptApp.getOAuthToken();
  var blob = UrlFetchApp.fetch(url).getBlob().setName(filename);
  var file = DriveApp.createFile(blob);
  var dlUrl = "https://drive.google.com/uc?export=download&id=" + file.getId();

  // Open a dialog and run Javascript for downloading the file.
  var str = '<script>window.location.href="' + dlUrl + '"</script>';
  var html = HtmlService.createHtmlOutput(str);
  SpreadsheetApp.getUi().showModalDialog(html, "sample");
  file.setTrashed(true);

  // This is used for closing the dialog.
  Utilities.sleep(3000);
  var closeHtml = HtmlService.createHtmlOutput("<script>google.script.host.close()</script>");
  SpreadsheetApp.getUi().showModalDialog(closeHtml, "sample");
}

如果需要做任何事情来使该脚本运行,我会全力以赴 - 并将永远感激不尽!

【问题讨论】:

  • 但无法正常工作。描述性不够。见minimal reproducible example
  • 您遇到什么错误?你在隐身吗?
  • 我解决了我的问题 - 我意识到我已经有了想要以 PDF 格式作为电子邮件附件输出的工作表。我只是创建了另一个电子邮件帐户,并使用 Thunderbird 作为我的电子邮件客户端。我可以使用 Thunderbird 插件删除电子邮件附件,并将附件文件放在本地文件夹中。
  • 你会考虑发布一个答案来解释你是如何解决你的问题的吗?

标签: google-apps-script google-sheets


【解决方案1】:

我很乐意这样做。

本着诚实的精神,我需要说的是,这个工作流程目前类似于“在 beta 测试中”。现在,工作流程“有效”,但我没有“可靠的信心”,认为它在所有条件和情况下都会做我希望它做的事情。时间会证明一切。话虽如此,我希望有人会发现我要说的内容在某些方面很有用。

作为背景,让我解释一下为什么我必须开发这个“工作流程”。我需要每周通过电子邮件发送我的老板报告。我预计现在每周一次的“报告”将很快成为日常琐事,并在公司范围内扩大到数百人。我想要一个解决方案:

  1. 具有可扩展性,可以扩展到多个用户。
  2. 没有使用任何付费软件 - 一切都必须是开源的。
  3. 提供了一个“可跟踪”的解决方案 - 如果在任何时候,某些事情没有按计划工作,它很容易调试和修复。
  4. 完全是“内部”的。有时,我的报告包含敏感数据,因此我不想将任何数据发送给第三方公司。

为了完成这项工作,我使用了几个应用程序:

  1. 谷歌脚本
  2. 两个 Gmail 帐户(GM1 和 GM2)
  3. Thunderbird 电子邮件客户端(安装在 GM2 上)
  4. Thunderbird 插件(“Filtaquilla”)

我需要使用公司提供的模板(在 Google 表格中)来撰写我的报告。该报告本身是本周收集的关键信息(生产输出、机器运行状况、预防性维护等)的汇编。每个星期一早上,我都会从一个空的报告模板开始。到周五下午,报告模板已满,可以通过电子邮件发送给我的老板。

这是我的工作流程:

第 1 步

周五下午晚些时候,Google 脚本触发器触发,导致脚本将我的报告模板从 Google 表格转换为 pdf 文件。 pdf 文件附加到预先编写的电子邮件中,并通过电子邮件发送到 GM1 电子邮件帐户。

第 2 步

当 GM1 帐户收到报告电子邮件时,Gmail 中的过滤器会将电子邮件(和报告)转发给 GM2。

第 3 步

当在 GM2 帐户(安装 Thunderbird 的地方)中收到报告电子邮件时,Thunderbird 中的过滤器会将电子邮件标记为已读,并将电子邮件移动到“本地文件夹”中。此外,“Filtaquilla”插件会复制附加的报告并将其保存到主机文件结构中的文件夹中。

【讨论】:

    猜你喜欢
    • 2011-08-06
    • 2012-11-09
    • 2012-12-11
    • 1970-01-01
    • 2016-10-15
    • 2018-01-26
    • 2020-10-15
    • 2012-02-08
    • 1970-01-01
    相关资源
    最近更新 更多