【问题标题】:Google Apps Script - Download Variable-Content as Text-FileGoogle Apps 脚本 - 将变量内容下载为文本文件
【发布时间】:2019-09-28 00:08:22
【问题描述】:

我在 Google Apps 脚本中有一个变量 (TRK),并打算将变量的内容下载为文本文件。它会得到一个 GPX 文件。如何通过单击 Google 表格中的命令按钮来下载此文件?

这是变量TRK的内容:

<gpx><trk><trkseg>
<trkpt lat="50.101475" lon="8.530224"></trkpt>
<trkpt lat="50.101612" lon="8.53075"></trkpt>
<trkpt lat="50.101616" lon="8.530927"></trkpt>
<trkpt lat="50.10153" lon="8.531324"></trkpt>
<trkpt lat="50.101451" lon="8.531785"></trkpt>
</trkseg></trk></gpx>

【问题讨论】:

  • 看看这个:stackoverflow.com/questions/17376102/…。也只是谷歌Downloading with Google Apps Script
  • 谢谢。这些都是如何下载文件的示例。但我正在寻找一个代码来下载如上所述的变量内容。
  • 你说你要下载的变量的内容是一个文本文件。如果这不是您想要的,请更改您的问题。
  • 是的,我想将变量 TRK 的内容下载为文本文件。但我看不懂样本。
  • 下载后你打算用它做什么?

标签: google-apps-script


【解决方案1】:

实际上我花了两个按钮。

function onOpen() {
  SpreadsheetApp.getUi().createMenu('My Tools')
  .addItem('Save Variable As File', 'saveVariableAsFile')
  .addItem('Download gpx.txt', 'downLoad')
  .addToUi();
}

使用此功能或类似功能将内容保存在文件中。文件名是 gpx.txt,您需要使用您选择的一个来更新文件夹 ID。如果您愿意,您可以更改文件名。但它在几个地方使用,所以全部替换。

function saveVariableAsFile(gpx) {
  var folder=DriveApp.getFolderById('FolderId');
  var files=folder.getFilesByName("gpx.txt");
  while(files.hasNext()) {files.next().setTrashed(true);}//guarantees that there is only one file with that name in the folder.
  var file=folder.createFile("gpx.txt", gpx);
}

这个脚本是从一个菜单中调用的,或者如果你想让它成为一个图像按钮,这取决于你。我会生成一个对话框,允许您将文件下载到您的计算机。

function downLoad() {
  var url=ScriptApp.getService().getUrl();
  var html=Utilities.formatString('<input type="button" value="Download GPX" onClick="window.location.replace(\'%s\');" />',ScriptApp.getService().getUrl());
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showSidebar(userInterface);
}

这个函数实际上执行下载。它从上述文件夹中获取文件,因此您需要替换文件夹 id。

function doGet() {
  var folder=DriveApp.getFolderById('FolderId');
  var file=folder.getFilesByName("gpx.txt").next();//There is only one file in the folder with that name
  return ContentService.createTextOutput().append(file.getBlob().getDataAsString()).downloadAsFile(file.getName());     
}    

【讨论】:

  • 非常感谢您的支持!
猜你喜欢
  • 2013-06-26
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多