Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在将Google Apps脚本的输出检索到本地计算机_Javascript_Google Apps Script_Gmail_Gmail Api - Fatal编程技术网

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

Javascript 正在将Google Apps脚本的输出检索到本地计算机,javascript,google-apps-script,gmail,gmail-api,Javascript,Google Apps Script,Gmail,Gmail Api,我正在运行一个GoogleApps脚本(基于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

我正在运行一个GoogleApps脚本(基于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);
var地址=[];
var threads=GmailApp.search(“标签:mylabel”,0,10);
对于(var i=0;i

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

谷歌应用程序脚本无法将任何内容直接保存到您的计算机。但它可以将数据保存到谷歌电子表格中,然后你可以下载

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;
}
您可以使用现有的电子表格,也可以创建新的电子表格。因此,逻辑从以下两个方面开始

var ss = SpreadsheetApp.create("Output");  // new 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); 

使用
数据的中间步骤是将一维数组
地址
转换为二维数组,
[[addr1],[addr2],…]
-这是在谷歌表单中表示值的方式。

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

如果我从GoogleApps脚本和GoogleDrive获得数据,我认为Web应用可以用于这种情况。例如,它以触发器
run=ok
的形式从Google检索数据,可以使用以下示例脚本

脚本: 您可以在本地PC上使用curl检索
结果的数据,如下所示。该URL是Web应用程序URL

curl -L https://script.google.com/macros/s/#####/exec?run=ok
结果:
昨晚我在调试一个程序时遇到了一些问题,我希望能够在我的计算机上的新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;
}
函数getText(obj) { var presentationId=getPresentationId(); var data=Slides.Presentations.Pages.get(obj.presId,obj.pageId); myUtilities.saveFile(数据)
对于(var i=0;iThanks@Tanaike!我通常在
https://script.google.com/d/...8DSQD-PVKj/edit
,如何获取
curl
的URL?另外,名称
doGet(e)
是必需的还是我可以使用
函数myFunction(e){}
?@Basj您可以检索
https://script.google.com/macros/s/###/exec?run=ok
在GAS上使用
ScriptApp.getService().getUrl()
。URL是恒定的。因此,您可以通过一次检索来继续使用它。在Web应用程序中,
doGet(e)的功能
必须使用。如果你想使用其他函数,你可以使用
函数doGet(e){return myFunction(e)}
。我误解了你的评论,很抱歉。谢谢你的回答,它帮助了我:)相关:。再次感谢@Tanaike,现在是结果:。
sample data
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;
}