0

MyGuiフロー パネル ( mainPanel)、テキスト ボックス ( textValue)、およびボタン ( ) を備えた GUI ( ) を作成しましたgetETA。サイト スクリプト内のすべて。

テキスト ボックスに値を入力し、ボタンをクリックすると、その値がスプレッドシートのセル A1 に配置されます。

GUI で構成されたハンドラーはなく、スクリプトをコピーして新しいサイトに貼り付けましたが、成功しませんでした。

私が抱えている問題は、スプレッドシートのセルに表示されるのが「未定義」であることです。また、関数でデバッグを実行するとclickGetETA、次のエラー メッセージが表示されます。

私はこれに慣れていませんが、GUIの詳細がclickGetETA関数に渡されていないというのが私の最善の推測です。できることを調べたのですが、解決策が見つからないようです...

誰かが私が間違っている場所を教えてくれたら、助けていただければ幸いです。

function doGet() {
    var app= UiApp.createApplication();
    app.add(app.loadComponent("MyGui"));
    var clickHandler = app.createServerHandler('clickGetETA');
    clickHandler.addCallbackElement(app.getElementById('mainPanel'));
    app.getElementById('getETA').addClickHandler(clickHandler);
    return app;
}

function clickGetETA(e) {
    var sheet = SpreadsheetApp.openById('abcdefghjklmnopqrstuvwxyz');
    var ss = sheet.getActiveSheet();
    var target = ss.setActiveCell("A1");
    target.setValue(e.parameter.textValue);
}
4

3 に答える 3

2

変化する:

var ss = sheet.getActiveSheet();
var target = ss.setActiveCell("A1");

に :

var ss = sheet.getSheetByName("SheetName");
var target = ss.getRange("A1");

この種の良い例はこちら: https://developers.google.com/apps-script/guide_user_interfaces

サービスとして実行する必要があります。つまり、get 関数を使用します。

注: デバッグ時には、「e」パラメーターは存在しません。デバッグは少し制限されています。ActiveSheet と ActiveCell は、サービスではなくスプレッドシートから使用するように設計されています。サービスは、ポップアップ ボックスではなく Web ページを作成します。

エディ。

于 2012-05-17T00:46:31.533 に答える
0

で使用されるコールバック要素はaddCallbackElement、単一のウィジェットまたは GUI のパネルです。パネルを渡すと、パネル階層の下にあるすべてのウィジェットがパラメーターに含まれます。テキストボックスが追加するパネル内にあることを確認してください。

また、ウィジェットの値には、ウィジェットname(GUI ビルダーで設定する必要があります) を使用してハンドラー関数でアクセスできます。複数のウィジェットに同じハンドラーを使用する場合、 を使用してウィジェットを取得し、イベントのウィジェットを決定するために使用する IDnameと の違いに注意してください。そして、値にアクセスするため。テキストボックスに という名前を付けましたか?idgetElementByIdsourcenametextValue

于 2012-05-17T00:45:07.190 に答える
0

私にとってそれを修正したのは、UIエディターに入り、フォームフィールドと名前に ID が割り当てられていることを確認することでした. 名前がなかったので、e.parameter.fieldName が定義されていませんでした。

于 2012-06-15T04:33:39.413 に答える