Сценарий Google Apps - загрузка содержимого переменной в виде текстового файла - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть переменная (TRK) в скрипте Google Apps и я намерен загрузить содержимое переменной в виде текстового файла.Он должен получить файл GPX.Как я могу скачать это, нажав командную кнопку в Google Sheets?

Это содержимое переменной 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>

1 Ответ

1 голос
/ 28 сентября 2019

На самом деле мне потребовалось две кнопки.

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

Используйте эту функцию или что-то подобное для сохранения содержимого в файл.Имя файла - gpx.txt, и вам нужно обновить идентификатор папки одним из ваших вариантов.Вы можете изменить имя файла, если хотите.Но он используется в нескольких местах, поэтому замените их все.

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);
}

Эта функция фактически выполняет загрузку.Он получает файл из указанной выше папки, поэтому вам необходимо заменить идентификатор папки.

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());     
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...