iframe - Embed specific range from Google Sheets in website so that it is editable by website users -


i want embed specific range of cells google docs spreadsheet (or if doesn't work whole sheet without header , toolbar) in website, website visitor can input data.

i know how embed specific range of cells html table, doesn't allow website users edit sheet.

a similar question asked several years ago here suggested solution doesn't seem work anymore.

i called htmlspreadsheet can use dialog or deploy webapp doget go. it's still pretty simple app. there's lot of romm customization.

here's code.gs file:

function onopen() {   spreadsheetapp.getui().createmenu('html spreadsheet')     .additem('run spreadsheet in dialog', 'htmlspreadsheet')     .addtoui(); }  var ssid='spreadsheetid'; var sheetname='sheet1';  function htmlspreadsheet(mode) {   var mode=(typeof(mode)!='undefined')?mode:'dialog';   var br='<br />';   var s='';   var hdrrows=1;   var ss=spreadsheetapp.openbyid(ssid);   var sht=ss.getsheetbyname(sheetname);   var rng=sht.getdatarange();   var rnga=rng.getvalues();   s+='<table>';   for(var i=0;i<rnga.length;i++)   {     s+='<tr>';     for(var j=0;j<rnga[i].length;j++)     {       if(i<hdrrows)       {         s+='<th id="cell' + + j + '">' + '<input id="txt' + + j + '" type="text" value="' + rnga[i][j] + '" size="10" onchange="updatess(' + + ',' + j + ');" />' + '</th>';       }        else       {         s+='<td id="cell' + + j + '">' + '<input id="txt' + + j + '" type="text" value="' + rnga[i][j] + '" size="10" onchange="updatess(' + + ',' + j + ');" />' + '</th>';       }     }     s+='</tr>';   }   s+='</table>';   //s+='<div id="success"></div>';   s+='</body></html>';   switch (mode)   {     case 'dialog':       var userinterface=htmlservice.createhtmloutputfromfile('htmlss').setwidth(1000).setheight(450);       userinterface.append(s);       spreadsheetapp.getui().showmodelessdialog(userinterface, 'spreadsheet data ' + ss.getname() + ' sheet: ' + sht.getname());       break;     case 'web':       var userinterface=htmlservice.createhtmloutputfromfile('htmlss').setwidth(1000).setheight(450);       return userinterface.append(s).setxframeoptionsmode(htmlservice.xframeoptionsmode.allowall);    } }  function updatespreadsheet(i,j,value) {   var ss=spreadsheetapp.openbyid(ssid);   var sht=ss.getsheetbyname(sheetname);   var rng=sht.getdatarange();   var rnga=rng.getvalues();   rnga[i][j]=value;   rng.setvalues(rnga);   var data = {'message':'cell[' + number(i + 1) + '][' + number(j + 1) + '] has been updated', 'ridx': i, 'cidx': j};   return data; }  function doget() {   var output=htmlspreadsheet('web');   return output; } 

this htmlss.html file:

<!doctype html> <html>   <head>     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>     <script>     $(function() {      });     function updatess(i,j)     {       var str='#txt' + string(i) + string(j);       var value=$(str).val();       $(str).css('background-color','#ffff00');       google.script.run          .withsuccesshandler(successhandler)          .updatespreadsheet(i,j,value)     }     function successhandler(data)     {       $('#success').text(data.message);       $('#txt' + data.ridx + data.cidx).css('background-color','#ffffff');     }     console.log('my code');     </script>     <style>       th{text-align:left}     </style>   </head>   <body>   <div id="success"></div> 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -