0

Romain Vialard と James Ferreira の本 (変更) からのこの Google Apps Script 提案ボックス ライブラリを使用して、Google スプレッドシートにオートコンプリート機能 (スプレッドシートのポップアップ ウィンドウの Ui) を追加しようとしています。

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  if( s.getName() == "my_sheet" ) { //checks that we're on the correct sheet
    var r = s.getActiveCell();
    if( r.getColumn() == 1) {

        var names = ["Adam", "Peter", "Benjamin", "Ceaser", "Prometheus", "Gandi", "Gotama", "Mickey Mouse"];
        var app = UiApp.createApplication();
        var suggestBox = SuggestBoxCreator.createSuggestBox(app, 'contactPicker', 200, names);
        app.add(suggestBox);
        SpreadsheetApp.getActive().show(app);
        var dataCell0 = r.offset(0, 1);

      var dataCell0 = r.offset(0, 1); 
      if( dataCell0.getValue() == '' )
        otherTestTunction();
   }
  }
}

しかし、「my_sheet」の列 1 の編集を開始して Ui ボックスが表示されると、この自動化エラーが発生します (私の言語では、「このアクションを実行するには権限が必要です」と表示されます)。

ここに画像の説明を入力

ドキュメントによると、onEdit() トリガーは「そのユーザーとしての認証が必要なサービスにはアクセスできません。たとえば、Google 翻訳サービスは匿名であり、単純なトリガーでアクセスできます。Google カレンダー、Gmail、およびサイトは匿名ではなく、単純なトリガーはこれらのサービスにアクセスできません。」

私は を使用していないのでContactsApp、候補ボックス ライブラリには認証が必要だと思います。

承認を求める、インストール可能な on Edit トリガーを設定するにはどうすればよいですか? (コードサンプルを教えていただけますか?)

これが私のテスト用スプレッドシートです: https://docs.google.com/spreadsheet/ccc?key=0AtHEC6UUJ_rsdFBWMkhfWUQ0MEs2ck5OY1BsYjRSLXc&usp=drive_web#gid=0

4

1 に答える 1

2

ライブラリが必要とする承認についてあなたが提案したことについての好奇心から、私は新しいシートでテストを行いました.以下の正確なコードはスプレッドシートへのアクセスを要求します.

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
        var names = ["Adam", "Peter", "Benjamin", "Ceaser", "Prometheus", "Gandi", "Gotama", "Mickey Mouse"];
        var app = UiApp.createApplication();
        var suggestBox = SuggestBoxCreator.createSuggestBox(app, 'contactPicker', 200, names);
        app.add(suggestBox);
        SpreadsheetApp.getActive().show(app);
        var dataCell0 = r.offset(0, 1);
}

これを処理するには、ユーザーにスクリプトで 1 つの関数を実行するように依頼するだけで (関数に関係なく)、次のポップアップが表示されます。

ここに画像の説明を入力

この最初のステップの後、関数は期待どおりに動作します。つまり、Ui が表示されます。

それに加えて、あなたが達成したいことが実現可能かどうかわかりません。編集が完了するとonEditトリガーが起動します。つまり、ENTERを押した後、suggestBoxの値は考慮されません...さらにあなた何かをするためにUIでハンドラーをしなければならないので、このコードで本当に何をするつもりなのかまだ疑問に思っていますか? (理想的なのは、spreadsheetApp の onClick イベントですが、残念ながら今のところ存在しません...)

しかし、おそらく私は明らかな何かを見逃しました。

投稿でも言及しているインストール可能な onEdit については、SS にアクセスするユーザーではなく、トリガーを作成するユーザーとして実行されるため、エンドユーザーによって承認される必要がないことに注意してください。ユーザーのものではなく、あなた自身のデータ...それは無視できない制限かもしれません(Zigが以前のコメントで述べたように...)

于 2013-11-09T19:34:59.467 に答える