如何从GMAIL邮件的超链接中自动下载.csv文件并将其内容添加到Google电子表格

如何从GMAIL邮件的超链接中自动下载.csv文件并将其内容添加到Google电子表格,csv,google-sheets,google-drive-api,gmail,Csv,Google Sheets,Google Drive Api,Gmail,我收到一封带有超链接的电子邮件,单击该超链接可开始将csv文件下载到我的Gmail帐户。这不是一个实际的附件。当我收到这封电子邮件(有唯一的主题行)时,我需要一种方法来自动添加下载的.csv文件的内容 触发: 我的gmail帐户收到了一封带有特定主题行的电子邮件 行动1: 从电子邮件正文中的超链接下载.csv文件 行动2: 将.csv文件的内容添加到Google工作表文件中 我需要一个已经建立的服务,这样做或建议如何接近它 如果我能运行这个谷歌脚本,我应该能够找到一个可行的解决方案。问题是脚本一

我收到一封带有超链接的电子邮件,单击该超链接可开始将csv文件下载到我的Gmail帐户。这不是一个实际的附件。当我收到这封电子邮件(有唯一的主题行)时,我需要一种方法来自动添加下载的.csv文件的内容

触发: 我的gmail帐户收到了一封带有特定主题行的电子邮件

行动1: 从电子邮件正文中的超链接下载.csv文件

行动2: 将.csv文件的内容添加到Google工作表文件中

我需要一个已经建立的服务,这样做或建议如何接近它

如果我能运行这个谷歌脚本,我应该能够找到一个可行的解决方案。问题是脚本一直给我错误

function downloadFile(fileURL,folder) {

  var fileName = "";
  var fileSize = 0;

  var response = UrlFetchApp.fetch(fileURL, {muteHttpExceptions: true});
  var rc = response.getResponseCode();

  if (rc == 200) {
    var fileBlob = response.getBlob()
    var folder = DocsList.getFolder(folder);
    if (folder != null) {
      var file = folder.createFile(fileBlob);
      fileName = file.getName();
      fileSize = file.getSize();
    }
  }

  var fileInfo = { "rc":rc, "fileName":fileName, "fileSize":fileSize };
  return fileInfo;
}

这是我最近在工作中解决的问题,完全自动化从电子邮件到数据库的数据提取。我不打算为您编写解决方案,但我将为您提供您自己编写所需的信息和链接

注意:您的问题非常广泛,涵盖了大量不同的问题,每个问题都应该用自己的问题一次解决一个问题(其中许多问题已经有多个关于StackOverflow的答案)。这是一个与链接文档和两个代码片段一起遵循的过程,因此您可以自己完成并解决过程中的每个问题

拟议的进程:

  • 打开带有
  • 通过下面的脚本提取链接
  • 通过下面链接的代码从链接获取CSV。这利用了
    UrlFetchAp
    Blob
    数据类型和
    parseCsv
    实用程序(必须先将其转义为逗号,因为它有缺陷)
  • 根据您的喜好修改结果数组的内容
  • 使用打开电子表格并获取范围
  • 将该范围的值设置为数据数组
  • 从电子邮件中提取href链接(假设只有一个链接):

    //从href中的HTML字符串检索URL。仅当字符串中只有一个链接时适用
    函数GetHrefURLsFromString(string){
    var href=string.match(/href=“([^”]*)/)[1];
    如果(href){
    返回href;
    }否则{
    抛出“找不到URL”
    } 
    }
    
    从链接中提取CSV:

    //从提供的链接获取CSV,并对其进行解析。
    函数GetCSVFromLink(链接){
    var urlData=UrlFetchApp.fetch(链接);
    如果(urlData.getBlob().getContentType()=='csv'){
    var stringData=urlData.getContentText();
    var escapedStringData=stringData.replace(/(?=[“])(?:“[^”\\]*(?:\\[\s][^”\]*)*“\”[^'\\]\r\n(?:\\[\s\s][^'\]\r\n)*')/g,“\r\n”);
    var CSV=Utilities.parseCsv(escapedStringData);
    返回CSV;
    }
    Logger.log('数据类型不是CSV')
    返回null;
    }
    
    我尝试使用Zapier集成连接,但提供的解决方案还不够。有一些脚本尝试使用实际附件进行连接,但我正在努力解决这是一个超链接下载问题。我觉得这实际上应该更容易,但我可能错了。我也尝试了此处的说明,但运气不佳:@Pau为什么你不接受这个答案?这对你来说够了吗?