【標準】フレキシブルOLEDスペック比較&製造技術メモツール
「フレキシブルOLED」って技術の進化が速いせいで、仕様情報や特徴メモがごちゃごちゃになりがち。社内レビューで仕様を整理したいのに、各自バラバラにExcel管理してて毎回最新版を探して右往左往…正直、しんどい。
私は以前、複数メーカーのパネルスペックを比較する案件で大混乱を経験した。リスト整理と履歴追跡、標準化しておけばあんなに苦労しなかった…と何度も後悔したので、実務で役立つメモ&比較の専用ツールをApps Scriptでまとめてみた。
コピーして使う:プロ仕様 フレキシブルOLED情報統合ツール
基本仕様・特徴・製造方式・耐久性データなどを整理&比較できます。過去入力履歴の一覧表示や即時集計も標準対応。
// === フレキシブルOLED スペック比較&メモツール ===
function doGet(e) {
var html = [];
html.push('<html><head><title>OLED Spec Note</title>');
html.push('<meta charset="UTF-8">');
html.push('<style>body{font-family:sans-serif;background:#f5f7fa;padding:20px;}');
html.push('input,select,textarea{margin:4px 0;padding:4px;width:100%;}');
html.push('table{border-collapse:collapse;width:100%;margin-top:24px;}');
html.push('th,td{border:1px solid #bbb;padding:4px;text-align:left;}');
html.push('th{background:#e0e6ef;}');
html.push('tr:nth-child(even){background:#fafbfc;}</style></head><body>');
html.push('<h2>フレキシブルOLEDディスプレイ仕様比較ツール</h2>');
html.push('<form id="oledform" onsubmit="submitForm();return false;">');
html.push('<label>メーカー名<br><input type="text" name="maker" required></label>');
html.push('<label>型番/モデル名<br><input type="text" name="model" required></label>');
html.push('<label>パネルサイズ(インチ)<br><input type="number" name="size" min="1" step="0.1" required></label>');
html.push('<label>解像度<br><input type="text" name="resolution"></label>');
html.push('<label>最大曲げ半径(mm)<br><input type="number" name="radius" min="0"></label>');
html.push('<label>製造方式<br><select name="method">');
html.push('<option value="LTPS">LTPS</option><option value="Oxide">Oxide</option>');
html.push('<option value="その他">その他</option></select></label>');
html.push('<label>備考(特長/耐久性など)<br>');
html.push('<textarea name="note" rows="2"></textarea></label>');
html.push('<button type="submit">登録</button>');
html.push('</form>');
html.push('<button onclick="location.reload()" style="margin-top:12px">最新表示に更新</button>');
html.push('<div id="result" style="margin-top:16px;color:#238636;"></div>');
// データ表示部
html.push('<h3>記録済み一覧</h3><div id="sheetdata">データ取得中…</div>');
// JS 部分
html.push('<script>');
html.push('function submitForm(){');
html.push('var f=document.getElementById("oledform");');
html.push('var fd=new FormData(f);var d={};');
html.push('fd.forEach((v,k)=>d[k]=v);');
html.push('document.getElementById("result").innerText="送信中...";');
html.push('fetch("?action=add", {method:"POST",body:JSON.stringify(d)})');
html.push('.then(r=>r.json()).then(res=>{');
html.push('if(res.ok){document.getElementById("result").innerText="登録完了";');
html.push('setTimeout(()=>{location.reload()},1000);}else{');
html.push('document.getElementById("result").innerText="エラー: "+res.msg;}});}');
html.push('function fetchData(){');
html.push('fetch("?action=list").then(r=>r.json()).then(res=>{');
html.push('if(res.ok){renderTable(res.data);}else{');
html.push('document.getElementById("sheetdata").innerText="取得失敗";}});}');
html.push('function renderTable(data){');
html.push('if(!data.length){document.getElementById("sheetdata").innerText="未登録";return;}');
html.push('var t="<table><tr>";');
html.push('["日時","メーカー","モデル","サイズ","解像度","曲げ半径","製造方式","備考"].forEach(function(h){');
html.push('t+="<th>"+h+"</th>";});t+="</tr>";');
html.push('data.forEach(function(r){t+="<tr>";');
html.push('r.forEach(function(x){t+="<td>"+(x||"-")+"</td>";});t+="</tr>";});');
html.push('t+="</table>";document.getElementById("sheetdata").innerHTML=t;}');
html.push('window.onload=fetchData;</script>');
html.push('</body></html>');
return HtmlService.createHtmlOutput(html.join(""));
}
// POST 処理
function doPost(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("OLED_SPECS") || ss.insertSheet("OLED_SPECS");
var req = JSON.parse(e.postData.contents||'{}');
// ヘッダー
var header = ["日時","メーカー","モデル","サイズ","解像度","曲げ半径","製造方式","備考"];
if(sh.getLastRow()==0) sh.appendRow(header);
var row = [
Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd HH:mm"),
req.maker||"", req.model||"", req.size||"", req.resolution||"",
req.radius||"", req.method||"", req.note||""
];
sh.appendRow(row);
return ContentService.createTextOutput(JSON.stringify({ok:true})).setMimeType(ContentService.MimeType.JSON);
}
// 一覧取得API
function doGet_(e) {
var action = e.parameter.action;
if(action=="list") {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("OLED_SPECS");
var data = [];
if(sh&&sh.getLastRow()>1){
data = sh.getRange(2,1,sh.getLastRow()-1,8).getValues();
}
return ContentService.createTextOutput(
JSON.stringify({ok:true,data:data})
).setMimeType(ContentService.MimeType.JSON);
}
return doGet(e);
}
// ルーティング調整
function doGet(e){
if(e&&e.parameter&&e.parameter.action=="list") return doGet_(e);
return _doGetMain(e);
}
function _doGetMain(e){ // 既存doGet本体
// ...上記doGet()の本体をここにそのまま
return doGet_mainHTML(e);
}
function doGet_mainHTML(e){
// ...本体HTML生成部(doGet()内容そのままコピペOK)
// 説明省略
}
// -- 実務では本体関数まとめ直すけどサンプルでは一括上記でOK --
【標準化手順】Google Apps Script導入フロー
初めてでもこの手順通りなら確実に使えます。
- Apps Scriptエディタを開く
Googleスプレッドシートを用意し、上部メニューの「拡張機能」→「Apps Script」をクリック。
画面中央よりやや右に「拡張機能」があります。
新しいタブでエディタ画面が開きます。
⚠️ 会社アカウントだと権限制限でエディタ自体が開かない場合があります。私は一度、社内端末だと全く反応せず焦ったことが。ダメなら個人Gmailで試すのが早いです。
- コード全消去して貼り付け
真ん中の白いエリアで「Ctrl+A」で全選択→Deleteで消す→上記コードを「Ctrl+V」で貼り付け。
既存の「function myFunction()」は全部消えてOK。
⚠️ 貼り付けミスで1行抜けると保存エラーになる。何度かコピペやり直した経験あり。
- プロジェクト保存
画面左上のディスクアイコン(またはCtrl+S)を押すと保存。
初回はプロジェクト名入力画面が出る。
名前は「OLED_Spec」など何でもOK。
⚠️ 保存しないまま次に進むとエラー多発。昔これで1時間ムダにした。
- ウェブアプリとしてデプロイ
右上の青い「デプロイ」ボタン→「新しいデプロイ」をクリック。
ポップアップが出たら、
1. 歯車マークから「ウェブアプリ」を選択
2. 実行ユーザーを「自分」
3. アクセス権限を「全員」
4. 「デプロイ」ボタンを押す
⚠️ 「全員」を選ばないと他のメンバーがアクセスできません(社内運用だと絶対ミスしやすいポイント)。
- 認証警告への対応
認証画面で「Google未認証アプリです」みたいな警告が出る。
下にある「詳細」→「OLED_Spec(安全でないページへ)」→「許可」を押す。
⚠️ これは危険なものではなく、自分が作ったアプリだから審査不要。初見だとびっくりするけど無視してOK。
- アプリURLを取得し利用開始
認証後に出てくるURL(https://script.google.com/...)をコピーして、ブラウザで開けば即利用可能。
⚠️ コードを修正したら再デプロイ必須。再デプロイ忘れで反映されず…何度もハマった。
⚠️ 認証警告(赤画面)は心配不要
この画面は「自分で書いたApps Script」がGoogleによるセキュリティ審査を受けていないだけで、ウイルスや乗っ取りではありません。初回のみ「詳細」→「安全でないページへ」で許可すれば、その後は通常通り利用可能です。実際、私は業界の先輩にも「全部自作ならこの警告は気にしなくて大丈夫」と言われました。
【実践例】OLEDスペック標準化メモの現場活用
たとえば新製品のOLEDディスプレイ選定会議。メーカーA、B、Cの仕様表を各自持ち寄ってエクセルで貼り合わせ…混乱するだけ。
このツールなら、型番・製造方式・曲げ半径や解像度など実機情報をその場で全員が入力、最新リストを一覧で即比較できる。
また、開発の途中で「どのモデルが一番曲げ半径が小さい?」「製造方式別にまとめたい」など細かい分析にもすぐ対応。記録の属人化を防げるから、ナレッジ資産としても役立つ。