1

UiApp を使用して SpreadSheet ファイルに行の値を表示するスクリプトを作成しようとしています。

また、このスクリプトは、スプレッドシートに変更があるたびにデータを更新する必要があります。これは通常、Trigger onChange だけで簡単です。

ただし、SpreadSheet自体も別の関数によって更新されており、変更が別のAppScriptによって引き起こされた場合、onChangeはトリガーされないようです。

私が説明したことを達成する別の方法はありますか?

以下のコード、ありがとう

    var ss = SpreadsheetApp.openById("tqwJk280I1O_yW5oNX9nLQA");

function doGet() {
  var app = UiApp.createApplication();
  var masPanel = app.createFlowPanel().setId("panel");
  var number = parseInt(ss.getRange("A1").getValue());
  masPanel.add(app.createLabel(number));
  masPanel.add(app.createFlowPanel().add(app.createFormPanel()
           .add(app.createFlowPanel()
           .add(app.createSubmitButton("Plus!")))));

  app.add(masPanel);

  return app;
}

function doPost()
{
  var num = parseInt(ss.getRange("A1").getValue()) + 1;
  ss.getRange("A1").setValue(num);
}

function onChange()
{
  ss.getRange("A2").setValue("hahaha");
  var app = UiApp.createApplication();
  app.remove(app.getElementById("panel"))
  var masPanel = app.createFlowPanel().setId("panel");
  var number = parseInt(ss.getRange("A1").getValue());
  masPanel.add(app.createLabel(number));
  masPanel.add(app.createFlowPanel().add(app.createFormPanel()
           .add(app.createFlowPanel()
           .add(app.createSubmitButton("Plus!")))));

  app.add(masPanel);

  return app;
}
4

1 に答える 1

3

関数には UI へのonChange()参照がありません。たとえば、複数の人が同じ UI を開いている場合、どちらを更新する必要がありますか?

したがって、問題の解決策は、UI コードがスプレッドシートを定期的にポーリングし、スプレッドシートが変更された場合に UI を更新することです。これを行うには、文書化されていないaddTimer()方法を使用できます。良い例については、このSOの質問と回答を参照してください

于 2013-06-28T07:16:43.513 に答える