0

さて、私はドキュメントを読んでいて、関数を呼び出してパラメーターを正しく渡していると信じていますが、私の人生では、この単純な UI コードを機能させることはできません。

次のコードを使用して、スプレッドシートの UI を生成しています。

function checkOut() {

  var app = buildUI();
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  spreadsheet.show(app);
}

function buildUI() {
  var gui = UiApp.createApplication();
  gui.setTitle("Check-Out/Check-In");
  gui.setStyleAttribute("background", "lavender");

  // Absolute panel for setting specific locations for elements
  var panel = gui.createAbsolutePanel();

  // Equipment ID#s Label
  var equipmentIDLabel = gui.createLabel("Equipment ID#s");
  equipmentIDLabel.setHorizontalAlignment(UiApp.HorizontalAlignment.CENTER);
  equipmentIDLabel.setSize("20px", "125px");
  equipmentIDLabel.setStyleAttributes({background: "SteelBlue", color: "white"});

  // Add all components to panel
  panel.add(equipmentIDLabel, 10, 0);

  gui.add(panel);

  return gui;
}

function getUIdata(eventInfo) {
  // I know how to get the data from each element based on ID
}

が呼び出されたときに絶対パネルを正しく生成しますcheckOut()が、EquipmentIDLabel がパネルに追加されることはありません。GUIビルダーで作成した単純なデザインに基づいてコードを作成しています(これは数日で非推奨になるため、後で変更できるようにコードを書いています):

特にない

では、ここで何が間違っているのでしょうか。要素を 1 つ追加する方法がわかれば、ドキュメントを見て残りを推測できます。私は GUI 開発が得意ではありませんでした。

4

3 に答える 3

1

興味深い代替手段としてグリッドを使用することもできます...ここに例があります:

// define styles
var labelStyle = {background: "SteelBlue", color: "white",'textAlign':'center','line-height':'20px','vertical-align':'middle','font-family':"Arial, sans-serif",'fontSize':'10pt'};// define a common label style
var fieldStyle = {background: "white", color: "SteelBlue",'font-family':"Courrier, serif",'fontSize':'11pt'};// define a common label style

function checkOut() {
  var app = buildUI();
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  spreadsheet.show(app);
}

function buildUI() {
  var gui = UiApp.createApplication();
  gui.setTitle("Check-Out/Check-In");
  gui.setStyleAttribute("background", "lavender");
  var panel = gui.createAbsolutePanel().setStyleAttribute('padding','10px');
  var grid = gui.createGrid(4,2).setWidth('300').setCellPadding(10);//define grid size in number of row & cols
  var equipmentID = ['equipmentIDLabel','equipmentIDLabel1','equipmentIDLabel2','equipmentIDLabel3'];// define labels in an array of strings
  for(var n=0 ;n<equipmentID.length ; n++){;// iterate
    var equipmentIDLabel = gui.createLabel(equipmentID[n]).setWidth('125').setStyleAttributes(labelStyle);
    var equipmentIDField = gui.createTextBox().setText('Enter value here').setName(equipmentID[n]).setSize("125", "20").setStyleAttributes(fieldStyle);
    grid.setWidget(n,0,equipmentIDLabel).setWidget(n,1,equipmentIDField);
  }
  gui.add(panel.add(grid));
  return gui;
}

ここに画像の説明を入力

于 2013-09-15T10:39:36.000 に答える
0

コードの特定の問題は、次の行です。

// Add all components to panel
  panel.add(equipmentIDLabel, 10, 0);

単純に次のように変更します。panel.add(equipmentIDLabel);

..フィールドが表示されます (位置 0,0)。

patt0 が観察しているように、その後、その他のコンポーネントを追加して配置を使用できます。最初のフィールドをabsolutePanelに追加することの制限のようです。

もちろん、Google Script の GUI は廃止されました (2014 年 12 月以降) が、コードを試してみて、基本的にまだ実行されることを確認したいと思いました (2016 年 2 月時点)。

于 2016-02-07T11:14:24.400 に答える