0

まだグーグルアプリスクリプトにかなり新しく、くだらないドキュメントで素晴らしいクラスを見ました。

https://developers.google.com/apps-script/class_docslistdialog。これを使用して、ユーザーがGoogleコレクションからドキュメントを選択できるようにしたいと考えています。

これが私が始めたものです:

var app = UiApp.createApplication().setHeight(400).setWidth(600);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var doclisthandler = app.createServerHandler('selectionhandler');
var doclist = app.createDocsListDialog().showDocsPicker().addSelectionHandler(doclisthandler); 
ss.show(app);}

function selectionhandler(e)
{    var app = UiApp.getActiveApplication();
var selname = e.parameter.doclist;           
toastDoc.toast(selname,'here in selectionhandler',4);
return app;
}

私のtoastDoc.toastは、selectionhandler関数が機能することを確認し、何が返されるかを確認するためのものです。selnameは「undefined」を返します。

上からのURLにあるもの以外のこのクラスの例を探しましたが、何も得られませんでした:(

理想的には、スクリプトがさらに処理できるように、選択されたドキュメントIDを返したいです...

どんな援助もいただければ幸いです

4

2 に答える 2

4

何が返されるかを確認するには、以下の関数を使用できます。すべてがロガーに返されます

function selectionhandler(e){
  var app = UiApp.getActiveApplication();
  Logger.log(e.parameter.items[0].id);
  Logger.log(e.parameter.items[0].name);
  Logger.log(e.parameter.items[0].url);
//Or to check everything which is returned in e.parameter
  Logger.log(e.parameter);
  return app;
}

お役に立てば幸い

于 2012-05-13T06:01:00.283 に答える
0

ハンドラーにコールバック要素を追加するのを忘れたようです...

addCallbackElement(name);

よろしく、セルジュ

編集:こんにちはジョー、私もこのようなことに取り組んでいます...私はこれまでに持っているものを示すのは面白いかもしれないと思いました...まだ終わっていません;-)私はあなたがそれを簡単にテストできるように全部を貼り付けます:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "Doclist UI", functionName: "doclistUI"},

                    ];
  ss.addMenu("Utilities", menuEntries);//
}
//
function doclistUI(){
  var folderlist = new Array();
  var folders=DocsList.getFolders()
  for(ff=0;ff<folders.length;++ff){
    folderlist.push(folders[ff].getName());
    }
  var app = UiApp.createApplication().setHeight(260).setWidth(700).setStyleAttribute('background', 'beige')
      .setStyleAttribute("position", "relative").setStyleAttribute("left", "10").setStyleAttribute("top", "12px");
  app.setTitle("Doclist UI");
  var panel = app.createVerticalPanel()
  var hpanel = app.createHorizontalPanel();
  var hpanel2 = app.createHorizontalPanel();
  var Flist= app.createListBox(false).setName("Flb").setId("Flb").setVisibleItemCount(4).setWidth("180");
  var Dlist= app.createListBox(false).setName("Dlb").setId("Dlb").setVisibleItemCount(8).setWidth("280");
  var Flab=app.createLabel('Folder List').setWidth("80");
  var Dlab=app.createLabel('Document List').setWidth("100");
  var spacer=app.createLabel(' ').setWidth("30");
  var spacer2=app.createLabel(' ').setWidth("15");
//  
  Flist.addItem('Choose a folder');
  for(ff=0;ff<folderlist.length;++ff){
    Flist.addItem(folderlist[ff]);
  }
  var anchor = app.createAnchor('open ', "www.google.com").setId('anchor').setVisible(false);
  hpanel.add(Flab).add(Flist).add(spacer).add(Dlab).add(Dlist)
  var docname = app.createLabel().setId('doc').setSize("360", "40");
  hpanel2.add(anchor).add(spacer2).add(docname);
  var dwnld = app.createButton("Download").setId("dwnld");
  panel.add(hpanel).add(hpanel2).add(dwnld);
//
  var FHandler = app.createServerHandler("click");
  Flist.addChangeHandler(FHandler)
  FHandler.addCallbackElement(hpanel);
//
  var DHandler = app.createServerHandler("showlab");
  Dlist.addChangeHandler(DHandler);
  DHandler.addCallbackElement(hpanel);
//
  var keyHandler = app.createServerHandler("download");
  dwnld.addClickHandler(keyHandler)
  keyHandler.addCallbackElement(panel);
//
  app.add(panel);  
  var doc = SpreadsheetApp.getActive();
  doc.show(app);
  }
//
function click(e){
   var app = UiApp.getActiveApplication();
   var Dlist = app.getElementById("Dlb");  
   var label = app.getElementById('doc')
   var folderName = e.parameter.Flb
       if (folderName=='Choose a folder'){Dlist.clear();label.setText(" ");return app}
   var doclist=new Array();
   doclist=DocsList.getFolder(folderName).getFiles(0,2000)
    if(doclist.length==0){Dlist.clear();Dlist.addItem(' No files');return app}
   var names = new Array();
      for (nn=0;nn<doclist.length;++nn){
      names.push([doclist[nn].getName(),doclist[nn].getId()]);
      }
  names.sort();
  Dlist.clear();
  for(dd=0;dd<names.length;++dd){
    Dlist.addItem(names[dd][0]+" (doc Nr:"+dd+")");
  }
return app   ;// update UI
}
//
function showlab(e){
  var app = UiApp.getActiveApplication();
  var label = app.getElementById('doc')
  var link = app.getElementById('anchor')
  var Dlist = app.getElementById("Dlb");  
  var folderName = e.parameter.Flb
  var docname = e.parameter.Dlb
  var doclist=new Array();
  Logger.log(doclist.length)
  doclist=DocsList.getFolder(folderName).getFiles(0,2000)
    if(doclist.length==0){return app}
  var names = new Array();
      for (nn=0;nn<doclist.length;++nn){
      names.push([doclist[nn].getName(),doclist[nn].getId()]);
      }
   names.sort();
   var filename = e.parameter.Dlb
   var ID= Number(filename.substring(filename.lastIndexOf(":")+1).replace(")",""));  
   var docN = docname.substr(0,docname.lastIndexOf("("))
   label.setText(docN).setEnabled(false).setStyleAttribute('fontSize', '15')
   link.setVisible(true).setHref("https://docs.google.com/spreadsheet/ccc?key="+names[ID][1]+"#gid=0");
   return app   ;// update UI
}
//
function download(e){ // this part not implemented yet :-/
   var app = UiApp.getActiveApplication();
   var Dlist = app.getElementById("Dlb");  
   var folderName = e.parameter.Flb
   var doclist=new Array();
   doclist=DocsList.getFolder(folderName).getFiles(0,2000)
   var names = new Array();
      for (nn=0;nn<doclist.length;++nn){
      names.push([doclist[nn].getName(),doclist[nn].getId()]);
      }
   names.sort();
// 
   var filename = e.parameter.Dlb
   var ID= Number(filename.substring(filename.lastIndexOf(":")+1).replace(")",""));  

  Browser.msgBox(names[ID][1])
return app   ;// update UI
}
//eof
于 2012-05-13T12:52:16.347 に答える