backup



```indexhtml:index.html
<head>
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css">
<link rel="stylesheet" type="text/css" href="https://officeforest.org/wp/library/userlist/css/jquery.dataTables.css">
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript" charset="utf8" src="https://officeforest.org/wp/library/userlist/jquery.js"></script>
<script type="text/javascript" charset="utf8" src="https://officeforest.org/wp/library/userlist/jquery.dataTables.js"></script>
<script type="text/javascript">
  $(document).ready(function() {
    $('#table_id').DataTable({
      "pageLength": 15
    });
  } );
</script>	
<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(test);

  function test(){
    google.script.run.withSuccessHandler(onSuccess).retdata();
  }
  
  function onSuccess(data){
    //各種データの取得
    var sampleNode=document.getElementById("userlist");
    var json = JSON.parse(data);
    var html = "";
    
    //htmlにテーブルの初期タグ部分を格納する。
    html  = "<table id=" + "table_id" + " class='display' cellspacing='0' width='100%'>"
          + "<thead><tr>";

    for(var a = 0; a < json[0].length; a++){
      html += "<th>" + String(json[0][a]) + "</th>";
    }

    html += "</tr></thead>"			 
          + "<tbody>";
    
    if(json[1][0] == ""){
      html = '<p style="color:black; font-size:18pt;">' + "本日は作業がありません。</p>";
    }else{
      //受信データからHTMLを作成し格納する（最新記事を上にする）
      for(var i = 1; i < json.length; i++){
        //テーブルタグを生成して格納する
        html  += "<tr>"
              + "<td>" + String(json[i][0]) + "</td>"
              + "<td>" + String(json[i][1]) + "</td>"
              + "<td>" + String(json[i][2]) + "</td>"
              + "<td>" + String(json[i][3]) + "</td>"
              + "<td>" + String(json[i][4]) + "</td>"
              + "<td>" + String(json[i][5]) + "</td>"
              + "</tr>";      
      }
      //htmlにテーブルの終了タグを追加
	    html += "</tbody></table>";
    }
    
    //生成したHTMLを置き換え
    sampleNode.innerHTML = html;	

    $(document).ready(function() {
      $('#table_id').DataTable({
        "processing": true,
        "pageLength": 10,
        "order": [[ 0, "desc" ]],
        "language": {
          "searching" : false,
          "emptyTable" : "データが登録されていません。",
          "info" : "_TOTAL_ 件中 _START_ 件から _END_ 件までを表示",
          "infoEmpty" : "",
          "infoFiltered" : "(_MAX_ 件からの絞り込み表示)",
          "infoPostFix" : "",
          "thousands" : ",",
          "lengthMenu" : "1ページあたりの表示件数: _MENU_",
          "loadingRecords" : "ロード中",
          "processing" : "処理中...",
          "zeroRecords" : "該当するデータが見つかりませんでした。",
          "paginate" : {
            "first" : "先頭",
            "previous" : "前へ",
            "next" : "次へ",
            "last" : "末尾"
          }
        }
      });
    } );
    
  }
</script>
</head>
<div id="userlist" style="font-size: 14px;">
<center>
<img border="0" src="https://officeforest.org/wp/library/ProgressSpinner.gif">
<b><div style="color:black; font-family:Arial; font-size:14pt;">しばらくそのままお待ち下さい</div></b>
</center>
</div>
```

```gas:コード.gs
function onOpen(e) {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('▶リンク集作成')
      .addItem('セットアップ', 'setup')
      .addSeparator()
      .addItem('プレビュー', 'pon')
      .addToUi();
}

//セットアップ
function setup(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheetId = sheet.getId();
  var Properties = PropertiesService.getScriptProperties();
  var spfile = Properties.setProperty("sheetid",sheetId);
  
  SpreadsheetApp.getUi().alert("セットアップ完了");
}


//プレビュー表示用
function pon(){
  var html =  HtmlService.createHtmlOutputFromFile("linkman").setSandboxMode(HtmlService.SandboxMode.IFRAME).setHeight(530).setWidth(1000);
  SpreadsheetApp.getUi().showModalDialog(html, "リンク集");
}
```

```gas:web.gs
function doGet(){
  var html =  HtmlService.createHtmlOutputFromFile("linkman")
              .setSandboxMode(HtmlService.SandboxMode.IFRAME)
              .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
              .setHeight(530)
              .setWidth(1000);
  return html;
}


//ウェブアプリケーションへデータをコールバック
function retdata(){
  var Properties = PropertiesService.getScriptProperties();
  var sheetid = Properties.getProperty("sheetid");
  
  //シートデータの取得
  var sheet = SpreadsheetApp.openById(sheetid);
  var ss = sheet.getSheetByName("data");
  var range = ss.getDataRange().getValues();
  return JSON.stringify(range);
}

```