通过jQuery中的下载链接解析CSV文件



因此,我使用Google DFA Reporting API提取活动报告文件列表并下载最新的活动报告文件。

function transferData() {
    var getFile = gapi.client.dfareporting.reports.files.get({
        'profileId': '12345', // My DFA profile ID
        'reportId': reportId, // The ID of the report type
        'fileId': runId // The ID of the final report (corresponding to the report type defined earlier)
    });
    getFile.then(function (response) {
        var URL = response.result.urls.browserUrl;
        window.open(URL); // Open the download link
    }, function (reason) {
        console.log('Error: ' + reason.result.error.message);
    });
}

这段代码返回URL变量,它本质上是CSV报告文件的下载链接,例如。https://storage.googleapis.com/dfa_-700df587fcd884268484ea3d1/campaign_report.csv?GoogleAccessId=12345m@developer.gserviceaccount.com&过期=1234&签名=12345

但是现在我需要以某种方式解析这个CSV文件。我过去所做的是立即让用户重新上传他们刚刚下载的CSV文件,这样我就可以通过PHP在服务器端解析它。然而,我希望避免下载然后上传的过程,并稍微自动化一些。我尝试使用AJAX,但偶然发现一个CORS错误,称跨源请求被阻止。使用jsonp作为数据类型绕过了CORS错误,但无法使用,因为服务器返回了CSV文件,对吧?

那么,我是否可以通过API提供的下载URL自动解析CSV文件,而无需用户在下载CSV后立即重新部署它?

您有几个选项:

选项1让用户将文件的URL发送回服务器,而不是下载文件并重新上传。然后服务器可以下载并解析文件本身。

选项2为javascript编写您自己的csv解析器,使用像string.split这样简单的东西可以处理您知道格式的非常基本的csv。

选项3使用像Papa Parse这样的csv解析库在浏览器中为您做一些困难的事情。

您可以使用以下代码来实现选项2或3:

<script>
function loadDoc(url) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
      parseFile(xhttp.responseText);
    }
  };
  xhttp.open("GET", url, true);
  xhttp.send();
}
function parseFile(csvFile){
  //contents of the csv file are now in csvFile
  alert(csvFile);
}
</script>

相关内容

  • 没有找到相关文章

最新更新