Nardong Bagsik
Nardong Bagsik

Reputation: 228

How to pass All Arrays in Google Script

I have a HTML File that upload a TSV File and display it in console as an array. here is the code.

    document.getElementById('file').onchange = function(){

    var file = this.files[0];

    var reader = new FileReader();
    reader.onload = function(progressEvent){
    // Entire file
    console.log(this.result);

    // By lines
    var lines = this.result.split('\n');
    for(var line = 0; line < lines.length; line++){
        // By tabs
        var tabs = lines[line].split('\\t');
        for(var tab = 0; tab < tabs.length; tab++){    
                console.log(tabs[tab]);
        }   
    }
  };
  reader.readAsText(file);
};
    <input type="file" name="file" id="file">
   

now here is my code.gs

function doGet(e){
  var html = HtmlService.createHtmlOutputFromFile("index");
  return html;
}

My question is how can I pass the array from the html file to code.gs? maybe a sample Logger.log will be okay form me. My target here is to upload that array in google sheet. TYSM

Upvotes: 1

Views: 56

Answers (1)

Tanaike
Tanaike

Reputation: 201358

How about following modification? When it sends the values on html to GAS, you can achieve this using google.script.run.

In this modifed sample, the array is sent to work() on GAS, and the array data is imported to Spreadsheet.

Modified Script :

index.html

document.getElementById('file').onchange = function(){
  var file = this.files[0];
  var reader = new FileReader();
  reader.onload = function(progressEvent){
    // Entire file
    console.log(this.result);
    // By lines
    var ar = []; // <--- added
    var lines = this.result.split('\n');
    for(var line = 0; line < lines.length; line++){
      // By tabs
      var tabs = lines[line].split('\t'); // <--- modified from '\\t' to '/t'
      for(var tab = 0; tab < tabs.length; tab++){    
        console.log(tabs[tab]);
      }
      ar.push(tabs); // <--- added
    }
    google.script.run.work(ar); // <--- added
  };
  reader.readAsText(file);
};

code.gs

function doGet(e){
  var html = HtmlService.createHtmlOutputFromFile("index");
  return html;
}

function work(res){
  var ss = SpreadsheetApp.getActiveSheet();
  ss.getRange(1,1,res.length,res[0].length).setValues(res);
}

Input

a1  b1  c1
a2  b2  c2
a3  b3  c3

Output

enter image description here

If I misunderstand your question, I'm sorry.

Upvotes: 1

Related Questions