行と列で古典的に並べ替えられたデータを含むスプレッドシートにデータベース プログラムがあります。私が取り組んでいるのは、ユーザーがデータベースを検索し、以下に示すような結果を表示できるようにする UI です。「テーブル」には、スクロール可能なテーブルの結果と次の 15 項目が表示され、最も重要なデータと、レイアウトを維持しながら任意のドキュメントにコピーして貼り付けることができる形式で選択した項目を含むテキスト領域が下部に表示されます (改行、間隔...) 注: スクリプトは、テーブル内のどの行にフォーカスがあるかも検出する必要があります。このテキスト領域は、2 つの (今のところ) いわゆる「フォーマット」を提供する必要があります。1 つはスクリーン キャプチャに示されている文字用で、もう 1 つはすべてのフィールド (カンマまたはタブで区切られている) を 2 行にまとめたものです (私はそれを「生データ」と呼びました)。 '
検索、テーブルへの入力、および UI デザインを実行できましたが (これが最終的に実際の質問です) テキストエリアで書式設定されたテキストを取得する方法がわかりません... HTML を使用する必要がありますか?
以下は、スクリーン キャプチャと私が現在使用している UI コードです。少なくとも、この図で物事がより明確になると思います ;-)
function buildUi() {
var app = UiApp.createApplication().setTitle("BrowseList Test")
.setHeight(340).setWidth(800).setStyleAttribute("background-color","beige").setStyleAttribute('padding','20');
var scroll = app.createScrollPanel().setPixelSize(750,150)
var vpanel = app.createVerticalPanel();
var cell = new Array();
var cellWidth = [45,135,150,250,50,100]
var row = new Array();
for(vv=0;vv<15;++vv){
row[vv]=app.createHorizontalPanel();
vpanel.add(row[vv]);
for(hh=0;hh<cellWidth.length;++hh){
cell[hh+(vv)*cellWidth.length]=app.createTextBox().setWidth(cellWidth[hh]+"");
row[vv].add(cell[hh+(vv)*cellWidth.length])
}
}
app.add(scroll.add(vpanel))
// Initial populate
var data = ss.getDataRange().getValues();
for(vv=0;vv<15;++vv){
for(hh=0;hh<cellWidth.length;++hh){
var rowpos=vv+1+offset
var cellpos = hh+(vv)*cellWidth.length
cell[cellpos].setValue(data[rowpos][hh])
}
}
var grid = app.createGrid(2,9).setWidth('700')
grid.setWidget(1, 0, app.createLabel('search'));
grid.setWidget(1, 1, app.createTextBox().setName('search').setId('search'));
grid.setWidget(1, 2, app.createRadioButton('mode','strict'));
grid.setWidget(1, 3, app.createRadioButton('mode','global').setValue(true));
grid.setWidget(1, 5, app.createLabel(' ').setWidth('100'));
grid.setWidget(1, 6, app.createLabel('show mode'));
grid.setWidget(1, 7, app.createRadioButton('show','letter').setValue(true));
grid.setWidget(1, 8, app.createRadioButton('show','raw data'));
app.add(grid);
var result = app.createTextArea().setPixelSize(700,100)
app.add(result)
ss.show(app);
}