paul pagente paul pagente - 2 years ago 98
jQuery Question

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

Answer Source

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.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download