2017-07-14 8 views
-1

私はHTML表にスプレッドシートを変換したHTML Webアプリケーションを用意しています。今、このHTMLテーブルをスプレッドシートに変換したいと思います。それをスプレッドシートに戻すことは可能ですか?アプリスクリプトのビジュアライゼーションテーブルをスプレッドシートGoogle Appsスクリプトコードに変換する方法

私は直接スプレッドシートを使用することができますが、問題は私がにいくつかのフィルタを適用したことです。私は特定の列にフィルタを適用するたびに今、それは今私がしたい。ここのGoogleアプリのスクリプトを

を使用して新しいスプレッドシートに移動する列がスプレッドシートにこの表を変換することができますどのように、私のテーブルであることが表示されますGoogle Appスクリプト私は1枚のシートがsht2tbl命名されたこの例や他のシートのための2つのシートを使用

My Table Image Please go through

+0

ようこそスタックオーバーフロー!あなたの質問の説明を編集して、他の人にもっと明確にするようにしました。私は多くの文法上の間違いや書式の問題を修正しました。また、問題に関連するコードを追加して、他の開発者が問題の解決に役立てるようにしてください – user3284463

答えて

0

の名前はtbl2shtを使用。コードを実行するときには、両方の準備が整う必要があります。

はここsheet2tableだとtable2sheet.gs:

function sheetToTable()//This produces a modeless dialog 
{ 
    var s=''; 
    s+='<table width="100%">'; 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var sht=ss.getSheetByName('sht2tbl'); 
    var rng=sht.getDataRange(); 
    var rngA=rng.getValues(); 
    for(var i=0;i<rngA.length;i++) 
    { 
    s+='<tr>'; 
    for(var j=0;j<rngA[0].length;j++) 
    { 
     if(i==0) 
    { 
     s+='<th id="cell' + i + j + '">' + rngA[i][j] + '</th>';//put ids in each th 
     } 
     else 
     { 
     s+='<td id="cell' + i + j + '">' + rngA[i][j] + '</td>';//put ids in each td 
     } 
    } 
    s+='</tr>'; 
    } 
    s+=' </body></html>' 
    var html=HtmlService.createHtmlOutputFromFile('html2body');//create output from file 
    html.append(s);//and append s for the rest 
    SpreadsheetApp.getUi().showModelessDialog(html, 'Sheet to Table') 
} 

function getParams()//this gives the client side array dimensions 
{ 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var sht=ss.getSheetByName('sht2tbl'); 
    var rng=sht.getDataRange(); 
    var A=[]; 
    A.push(rng.getWidth()); 
    A.push(rng.getHeight()); 
    return (A);//range width and height in an array 
} 

function putData(data)//this gets cell contents from the client side and displays them on another sheet named 'tbl2sht' 
{ 
    var ss=SpreadsheetApp.getActiveSpreadsheet(); 
    var sht=ss.getSheetByName('tbl2sht'); 
    var h=data.length; 
    var w=data[0].length; 
    var rng=sht.getRange(1,1,h,w);//create a range properly dimensioned 
    rng.setValues(data);//use setValues to load sheet 
} 

これは、ファイルhtmltobody.htmlです。この方法でJavaScriptを作成する方がずっと簡単です。しかし、私はサーバー側のGoogleスクリプトとデータの作成を統合するのが好きです。

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script> 
    $(function() { 

    google.script.run 
     .withSuccessHandler(getCellValues)//returns to get values from client side 
     .getParams();//get width and height of data array 
    }); 
     function getCellValues(A) 
     { 
     var w=A[0]; 
     var h=A[1]; 
     var data=[]; 
     for(var i=0;i<h;i++) 
     { 
      data[i]=[]; 
      for(var j=0;j<w;j++) 
      { 
      var s='#cell' + Number(i) + Number(j); 
      data[i][j]=$(s).text();//use jquery text to get th and td values   
      } 
     } 
     google.script.run 
      .putData(data);//send data to server side to load data in tbl2sht 
     } 
     console.log('My Code');//helps me to find code in chrome console 
    </script> 
    </head> 
    <body> 

これは、モードレスダイアログを作成するために使用したsht2tblです:

enter image description here

これが作成されるダイアログです:

enter image description here

そして、これがありますtbl2shtという名前のシートに表示されたダイアログのデータ:

enter image description here