0

我從使用UrlFetchApp.fetch的url請求生成的csv文件生成數據並使用記錄器存儲它們。有沒有寫從記錄儀獲取的數據中的每一行成不同的行中的電子表格記錄器值到行

的方式感謝您的任何想法

回答

0

我這個相當長的一段前一樣。這就是我如何從網站訪問者日誌導入數據。審查它們。我不會使用逗號,因爲您經常在數據中找到它們。我使用3個波浪線'~~~',而線則用換行符'\ n'分隔。 但我基本上分割線,然後將每行的字段放入數組中,並將它們一次一行地輸入到工作表中,通常我會處理大約100K或更少的20或30個文件。我發現它很快加載文件。

function importData1(myFolderID,myFolderName,myFileName) { 
    var myFolderID = typeof(myFolderID) !== 'undefined' ? myFolderID : 'FolderID'; 
    var myFileName = typeof(myFileName) !== 'undefined' ? myFileName : ''; 
    if(myFileName && myFolderID) 
    { 
    var fi = DriveApp.getFolderById(myFolderID).getFilesByName(myFileName); // Selected IPLogYYMMDD.txt file 
    var ssid = SpreadsheetApp.getActive().getId(); 
    var ss = SpreadsheetApp.openById(ssid); 
    if (fi.hasNext()) // proceed if file exists in the IPlogs folder 
    { 
     var file = fi.next(); 
     var data = file.getBlob().getDataAsString(); 
     var lines = data.split('\n'); 
     var newsheet = ss.insertSheet(myFolderName + '/' + myFileName); 
     var j=0; 
     for (var i=0; i<lines.length; i++) 
     { 
     var fields = lines[i].split('~~~'); 
      if(fields.length>=8)//There's supposed to be 8 or 9 fields 
     { 
      Logger.log('i=' + i + 'fields.length=' + fields.length); 
      newsheet.getRange(j+1, 1, 1,fields.length).setValues([fields]); 
      j=j+1; 
     } 
     } 
    } 
    } 
    else 
    { 
    displayStatus('Error Importing Data','Either Folder or File not found in importData1'); 
    } 

大部分變數很容易弄清楚。你可能會適應你的需要。可能會有幾個可供選擇的答案供您選擇。

+0

爲什麼不使用Utilities服務中的'parseCsv(csv_string [,delimiter])'?然後,您可以將生成的二維數組放入工作表中。 –

+0

好主意。不知道這一點。我會在下次嘗試。 – Cooper

+0

工程太棒了!謝謝 – JaKre