繁体   English   中英

将Google Apps脚本的输出检索到本地计算机

[英]Retrieving the output of a Google Apps script to local computer

我正在运行Google Apps脚本(基于Gmail数据),并且想将Javascript中的某些数据保存到本地计算机。 如何保存/下载使用Javascript计算的某些数据:

在此处输入图片说明

到本地文件?

我发现的是:

var addresses = [];
var threads = GmailApp.search("label:mylabel", 0, 10);
for (var i = 0; i < threads.length; i++) {
  var messages = threads[i].getMessages();
  for (var j = 0; j < messages.length; j++) {
    addresses.push(messages[j].getFrom());
  }
}
Logger.log(addresses);

但是Logger.log(...)对于将此数据保存到本地计算机不是很有用。

我建议将此作为另一个答案。

如果我从Google Apps脚本和Google云端硬盘获取数据,我认为Web Apps可以用于这种情况。 例如,它作为触发器run=ok从Google检索数据,可以使用以下示例脚本。

剧本:

function doGet(e) {
  if (e.parameter.run == "ok") {

    // do something

    var result = "sample data"
    return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.TEXT);
  }
  return
}

您可以使用本地PC上的curl检索result数据,如下所示。 该URL是Web Apps URL。

curl -L https://script.google.com/macros/s/#####/exec?run=ok

结果:

sample data

Google Apps脚本无法将任何内容直接保存到您的计算机中。 但是它可以将数据保存到Google Spreadsheet,然后可以下载。

您可能要使用现有的电子表格,也可以创建一个新的电子表格。 因此,逻辑开始于

var ss = SpreadsheetApp.create("Output");  // new spreadsheet

要么

var ss = SpreadsheetApp.openByUrl(url);  // existing spreadsheet

无论哪种方式,假设您都希望将地址列表存储在此电子表格的第一张工作表的A列中。 那会是

var sheet = ss.getSheets()[0];
var range = sheet.getRange(1, 1, addresses.length, 1); 
var data = addresses.map(function(x) {return [x];});
range.setValues(data); 

data的中间步骤是将一维数组addresses转换为二维数组[[addr1], [addr2], ...] -这是在Google表格中表示值的方式。

昨晚我在调试程序时遇到了一些麻烦,我希望能够在计算机上查看新版UltraEdit中的json,因此这就是将数据从Google脚本获取到计算机的方式。

function getText(obj)
{
  var presentationId=getPresentationId();
  var data=Slides.Presentations.Pages.get(obj.presId, obj.pageId);
  myUtilities.saveFile(data)
  for (var i=0;i<data.pageElements.length;i++)
  {
    if(data.pageElements[i].shape && data.pageElements[i].shape.text && data.pageElements[i].shape.text.textElements.length) 
    {
      for(var j=0;j<data.pageElements[i].shape.text.textElements.length;j++)
      {
        if(data.pageElements[i].shape.text.textElements[j].textRun)
        {
          var text=data.pageElements[i].shape.text.textElements[j].textRun.content;
        }
      }
    }
  }
  return text;
}

myUtilities.saveFile(data)是我编写的实用程序库的一部分,该实用程序库使将各种数据轻松存储在ascii文件中成为可能。 只需几分钟,文件就会自动同步到我的计算机Google云端硬盘中,我使用UltraEdit打开了文件并开始对其进行分析。 没什么了不起的。 仅仅利用现有功能就不会花哨的脚步工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM