it-swarm.com.de

Anzeigen aller Gruppenkontaktinformationen auf einer Seite

Angenommen, ich habe 5 Kontakte in einer Gruppe. Ich möchte alle ihre Details auf einer Seite (/ Ansicht) sehen, vorzugsweise durch eine horizontale Linie zwischen jedem Kontakt getrennt.

Ist so etwas möglich?

2
Eyal Levin

Mit dem folgenden Google Apps-Skript können Sie eine bestimmte Gruppe (in Ihren Kontakten verfügbar) auswählen und alle Kontakte anzeigen. Die angezeigten Daten enthalten nur den vollständigen Namen und die E-Mail-Adressen (falls verfügbar). Sie können andere Daten hinzufügen, wenn Sie möchten (selbst ...):

function doGet(e) {
  var app = UiApp.createApplication().setTitle('Group Contacts');

  // create grid
  var mFlex = app.createFlexTable().setId('mFlex').setStyleAttribute('borderCollapse','collapse');

  // create label for title
  mFlex.setWidget(0, 0, app.createLabel('Display Contacts per Group').setStyleAttribute('fontWeight', 'bold'));

  // retrieve group names
  var gNames = ContactsApp.getContactGroups();

  // create listbox to hold group names
  mFlex.setWidget(1, 0, app.createListBox().setId('lBox').setName('lBox')
    .addChangeHandler(app.createServerHandler('getContacts').addCallbackElement(app.getElementById('lBox'))));

  // add groups to listbox
  app.getElementById('lBox').addItem('Select Contact Group ...');
  for(var i in gNames) {
    app.getElementById('lBox').addItem(gNames[i].getName());
  } 

  // set first item in lBox
  app.getElementById('lBox').setItemSelected(0, true);

  // all to app
  app.add(mFlex);

  //return to appliccation
  return app; 
}

function getContacts(e) {
  // get active application
  var app = UiApp.getActiveApplication();

  // create panel
  var fTable = app.createFlexTable().setId('fTable');
  var vPanel = app.createVerticalPanel().setId('vPanel').setWidth(500);
  var sPanel = app.createScrollPanel().setId('sPanel').setHeight(300).setWidth(520);

   // get group name
  var gName = ContactsApp.getContactGroup(e.parameter.lBox);

  // get group contacts
  var gContacts = ContactsApp.getContactsByGroup(gName);

  // itterate through contacts 
  if(gContacts.length == 0) {
    fTable.setWidget(0, 0, app.createLabel('No contacts available'));
  } else { 
    // add headers
     app.getElementById('fTable').setWidget(0, 0, app.createLabel('Full name')
       .setStyleAttribute('fontWeight', 'bold'));
     app.getElementById('fTable').setWidget(0, 1, app.createLabel('e-mail address')
       .setStyleAttribute('fontWeight', 'bold'));

    // add data to fTable    
    for(var i=0, len=gContacts.length; i<len; i++) {
      if(gContacts[i].getFullName() == null) {
        app.getElementById('fTable').setWidget(parseInt(i)+1, 0, app.createLabel('No name').setWidth(200)
          .setStyleAttribute('borderBottom','1px solid #e1e1e1'));
      } else {
        app.getElementById('fTable').setWidget(parseInt(i)+1, 0, app.createLabel(gContacts[i].getFullName()).setWidth(200)
          .setStyleAttribute('borderBottom','1px solid #e1e1e1'));
      }
      if(gContacts[i].getEmails().length == 0) {
        app.getElementById('fTable').setWidget(parseInt(i)+1, 1, app.createLabel('No e-mail address').setWidth(200)
          .setStyleAttribute('borderBottom','1px solid #e1e1e1'));
      } else {        
        app.getElementById('fTable').setWidget(parseInt(i)+1, 1, app.createLabel(gContacts[i].getEmails()[0].getAddress())
        .setWidth(300).setStyleAttribute('borderBottom','1px solid #e1e1e1'));    
      }
    }
  }

  // add widgets
  app.getElementById('mFlex').setWidget(2, 0, sPanel.add(vPanel.add(fTable)));

  //return to application
  return app;
}

Drücken Sie nach der Installation auf den Bug, um die Autorisierung zu erhalten:

enter image description here


So sieht es in Aktion aus:

contacts per group

1