0

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

function doGet() {
  var contacts = ContactsApp.getContacts();
  var list = [];
  for(var i = 0; i < contacts.length; i++){
    var emails = contacts[i].getEmails();
    if(emails[0] != undefined){
      list.push(emails[0].getAddress());
    }
  }
  var app = UiApp.createApplication();
  var suggestBox = SuggestBoxCreator.createSuggestBox(app, 'contactPicker', 200, list);
  app.add(suggestBox);
  SpreadsheetApp.getActive().show(app);
}


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

しかし、「my_sheet_name」の列 1 の編集を開始すると、何も起こりません (testFunction()期待どおりに動作します)。Suggest Box ライブラリは既にインストールしています。では、なぜ doGet() 関数が機能しないのでしょうか?

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

4

1 に答える 1

1

onEdit は単純なトリガーです。ドキュメントを読むと、 「そのユーザーとしての認証が必要なサービスにはアクセスできない」ことがわかります。

そして、あなたのdoGet関数は を使用しContactsAppているため、黙って失敗します。

installable on Edit trigger別の名前を使用して、承認を求める を設定します。とは言っても、スプレッドシートにデータを返すことはありません (既に他の投稿でここに記載されているように、インストール可能なトリガーに関する章を注意深く読んでください)。

serverHandlers に関するこのドキュメントと、それを UiApp に実装する方法も参照してください。

于 2013-11-09T17:29:25.650 に答える