Address book very slow to show addresses

When I start up address book, although the application opens up quickly the addresses take several minutes to appear in the window. I can't be completely sure but I think it may be related to upgrading to OS X 10.6 - I don't remember this being a problem some months back.
Is there anything I can do to fix this problem.
Thanks in advance
- Vikas

In addition to this problem, from time to time the Address Book will slip into "Beach-ball" mode and (not necessarily coincident because this is consistently a problem) access to the Contacts in Mobile me is also either very slow or simply unavailable!

Similar Messages

  • Applet very slow and shows no activity, but its running

    I have a new applet for the users, but I am reluctant to implement until I get some others opinions. It is very slow (30 - 40 seconds)
    Before it outputs a screen with about 20 lines, it reads 90 different html files. It looks at the forth rec of each to extract a name. It also gets the file size to determine if the record needs to be on the screen.
    Anyway, it does 4 reads on 90 files. = 360 reads. Oops, it also reads and loads a 80 record file at the beginning. So total is 440 reads.
    It takes 30 - 40 seconds. Which is not horrible, but it is not good. What really bothers me is that the applet screen shows no activity. At the bottom is shows "done" and "100%". Task Manager shows no activity. But if you just let it sit there, it will finally fill the screen. Pretty amazing to me. I would much rather see a "progress bar" moving on the bottom like other screens. Actually, a progress bar would solve it, because the users are not in a big hurry anyway.
    I am using "openStream" and "readLine" for the files.
    Any opinions?
    import javax.swing.*;
    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.io.*;
    import java.util.*;
    public class urlaa extends JApplet
    //zz  implements Runnable, ActionListener
          implements ActionListener
    // zz added
        private JLabel item;
        private JList itemList;
      int par;
      int errorflag = 0 ;
      int orgsize = 14900 ;
      String par1;
      String s;
      String e1;
      String e2;
      String e3;
      String w1;
      String w2;
      String w3;
      String w4;
      int i = 0;
      int len ;
      int size ;
      String stringsize ;
      URLConnection conn ;
      int i2 = 0 ;
      int k = 0;
      int current = 0;
      String s1 ;
      String s6 ;
      String s7 ;
      String s8 ;
      String printline ;
      String pageLink;
      String arr[]  = new String[150] ;
      String arr2[] = new String[150] ;
      String arr3[] = new String[150] ;
      int arr4[] = new int[150] ;
      String inputLine;
      Thread runner;
      public void init()
             String parameter = getParameter("par1");
             if (parameter != null)
                 par = Integer.parseInt(parameter);
             else
                 par = 99;
    // zz         Button goButton = new Button("Go");
    // zz         goButton.addActionListener(this);
    // zz         add(goButton);
    // zz   added
            this.item = new JLabel();
            this.addButton();
            Container container = this.getContentPane();
            this.itemList = this.getList();
            container.add(this.getPanel());
            URL u;
            InputStream wis = null;
            DataInputStream dis;
            int rcnt = 0;
            int rcn2 = 0;
           //    1)  read filelist.txt file
           //         and load into a table.
           //    2)  close the filelist.txt file
           //    3)  Use the tabled file names to
           //         read and see if the bio
           //         has been done
           //  1) Read filelist.txt and load table
            try
            u = new URL("http://www.classof1961.mysite.com/filelist.txt");
            catch (MalformedURLException e)
              errorflag = 1 ;  // set error flag to stop while loops
              e1 = ("FILELIST.TXT MalformedURLException: " + e.getMessage()) ;
            try
                u = new URL("http://www.classof1961.mysite.com/filelist.txt");
                wis = u.openStream();
            catch (IOException ioe)
              errorflag = 1 ;  // set error flag to stop while loops
              e1 = ("FILELIST.TXT IOException : " + ioe.getMessage()) ;
    //      does not work     size = wis.getContentLength() ;
                // Convert the inputStream to a buffered DatainputStream.
                dis = new DataInputStream(new BufferedInputStream(wis));
                // Read 1st record to set up while loop
                   try
                     s1 = dis.readLine() ;  // get 1st rcd
                   catch (IOException ioe)
                     errorflag = 1 ;  // set error flag to stop while loops
                     e3 = ("FILELIST.TXT IOException : " + ioe.getMessage()) ;
                   while (s1 !=  null)
                   {  // load file names loop
                   if (errorflag == 0)
                   {  // if errors
                    arr[i] = s1 ;
                    i++ ;
                    try
                    s1 = dis.readLine() ;
                    catch (IOException ioe)
                      errorflag = 1 ;  // set error flag to stop while loops
                      s1 = null ; // force end of loop
                      e3 = ("load table read failed" + ioe) ;
                    rcnt++ ;
                    if (rcnt > 100)  // test code
                    {                // test code
                      errorflag = 1;
                      s1 = null ;
                      e3 = "Load table is looping!!" ;
                   }  // end of error check loop
                   }  // end of table load loop
               int lasttableentry = i ;  //
                   // CLOSE the filelist.txt file
                   try
                    wis.close();
                   catch (IOException ioe)
                    errorflag = 1 ;  // set error flag to stop while loops
                    e3 = ("close of filelist.txt file failed" + ioe) ;
    //   End of filelist read and load and close
    //      ptr to whats new names in table arr
            i = 0 ;
    //      While more names in table,
    //        Connect and Open file
    //        Read file until 4th rcd (rel 3rd rcd)
    //          if rcd has date, then move it to table
    //          else
    //          bump to next file name
              w1 = arr[i] ;
              w2 = w1.substring(1, 4) ;   // ONLY USED FOR CHK FOR XXXX
    //    ______________  start of major loop  _____________
            boolean morenames = true ;
            while (morenames)
            {  // Name table loop
            if (errorflag == 0)
            {  //if no errors
              try
                u = new URL(w1);
                try
                  URLConnection conn ;
                  conn = u.openConnection();
                  size = conn.getContentLength();
                catch (IOException e)
                  errorflag = 4 ;
                  morenames = false ;
                  e1 = ("file size logic failed " + w1) ;
              catch (MalformedURLException e)
                    errorflag = 1 ;  // set error flag to stop while loops
                    morenames = false ;
                    e1 = ("next whats new url error : " + w1) ;
    // compile error                break ;
              try
                  u   = new URL(w1) ;
                  wis = u.openStream();
              catch (IOException e)
                errorflag = 1 ;  // set error flag to stop while loops
                morenames = false ;
                e2 = ("next whats new open error :  " + w1) ;
    //   compile error            break ;
    //            Convert the inputStream to a buffered DatainputStream.
                  dis = new DataInputStream(new BufferedInputStream(wis));
                if (errorflag == 0)
                {  //if no errors
                       try
    //  does not work                       String s2 = dis.readLine(3) ;
                         s1 = dis.readLine() ;
                         s1 = dis.readLine() ;
                         s1 = dis.readLine() ;
                         s1 = dis.readLine() ;
                       catch (IOException e)
                         errorflag = 1 ;  // set error flag to stop while loops
                         morenames = false ;
                         e2 = "whats new file MalformedURLException: " ;
                       // file is larger than original non-bio file size
                       if (size > orgsize)  //  if file size > original file size
                       String s2a = s1.substring(0, 5);
                       String s3 = "                       " ;
    //                 Only look at title records to get the name
                       if (s2a.equals("<titl"))
                          int k2 = 7 ;
                          int l = k2 + 1 ;
                            while (!s1.substring(k2, l).equals("<"))
                              k2++ ;
                              l++ ;
                          s3 = s1.substring(7, k2) ;
                       else
                          s3 = "               " ;
    //                 s3 now has blanks or the name
                       arr2[k] = w1 ;    // move name into arr2 (link to bio)
                       arr3[k] = s3 ;    // move name into arr3 (bio name)
                       arr4[k] = size ;  // move in file size
                       k++ ;
                       } // end of if length > 36
                } // end of chk for error flag zero (no errors)
                  //  now we have to close this whats new file
                   // CLOSE the current whats new file
                   try
                    wis.close();
                   catch (IOException ioe)
                    errorflag = 1 ;  // set error flag to stop while loops
                    morenames = false ;
                    e3 = ("close of the current whats new file failed" + ioe) ;
                  //  end of the close
              rcn2++ ;
              if (rcn2 > 100)  // test code
              {                // test code
                 errorflag = 2;
                 morenames = false ;
                 e3 = "Searching files is looping!!" ;
              i++ ;           // bump to next whats up name
              w1 = arr[i] ;   // load it into work string
              if (i > lasttableentry)
                morenames = false ;
              } // end of error checking loop
             else
                  morenames = false ;
            } // end major name table loop
                   // CLOSE the last whats new file
                   try
                    wis.close();
                   catch (IOException ioe)
                    errorflag = 1 ;  // set error flag to stop while loops
                    e3 = ("close of last whats new file failed" + ioe) ;
    // end of init
    //     _________________ other methods  ______________________
    // zz added
        private JList getList() {
            // Create a List
            JList tempList = new JList(arr3);
            tempList.setVisibleRowCount(3);
            // Enable single selection
            tempList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            return tempList;
        private JButton addButton() {
            JButton button = new JButton("Select Item below and click here to go to the bio");
            button.addActionListener(this);
            return button;
        private JPanel getPanel() {
            // set layout to GridLayout 3 rows and 1 columns, no separations
            JPanel panel = new JPanel(new GridLayout(3,1,0,0));
            JScrollPane spane1 = new JScrollPane(this.itemList);
            panel.add(this.addButton());
            panel.add(spane1);
            panel.add(this.item);
    //       panel.add(new JLabel("Example List"));
            return panel;
    //   _______________  actionPerformed method  ____________________
         public void actionPerformed(ActionEvent evt)
           s8 = "actionPerformed";
    // zz added
            String command = evt.getActionCommand();
            // Get the selected value from the list and update the JLabel
            item.setText((String)itemList.getSelectedValue());
    //  try to redirect to selected url
      try
             int idx  = itemList.getSelectedIndex() ;
             String urlvalue = this.arr2[idx] ;
             URL u = new URL(urlvalue);
             this.getAppletContext().showDocument(u, "_self");
         catch(Exception e)
    }

    jagossage wrote:
    But if you just let it sit there, it will finally fill the screen. Pretty amazing to me. The onus is on you, the developer, to decide how to distract your users as they wait for your code to finish. Why should you expect something to do it for you?
    I would much rather see a "progress bar" moving on the bottom like other screens.Ah, I think I see where you're confused. The progress bar and applet loading subtitles, etc are Java's way of presenting the progress of loading the applet. Once it's fully loaded, though (which it is when your code starts running), it hands off control to you. It's in your hands at that point.

  • Very slow to show thumbnails of EOS 5DMarkII

    I've just bought a mackbook pro with preinstalled aperture 2 (snow leopard 10.6).
    I use a canon 5DMarkII since few months and I would like to import my images into aperture.
    I've imported 20 images in a new project. But, the creation of thumbnails is very slow (after 2 hours there is no thumbnails visible...).
    If i visit this page http://www.apple.com/fr/aperture/specs/raw.html the 5DmarkII is not supported. Is that true ?
    It's terrible if aperture 2 is not able to work with the camera.
    Do you have any experience ?
    Thanks

    That's definitely not right, I use a 5d2 and if you have 4gb of Ram you should be fine. Check these things:
    1. Make sure your GPU is set to Dedicated/performance under the energy saver system preferences.
    2. Go into your aperture preferences and under "previews" turn off "new projects automatically generate previews", and turn on "use embedded JPEG from camera when possible".
    3. Unless you want to use high quality previews, turn on a size limitation for previews down to the size of your monitor.
    Other tips:
    If you have a new macbook, you can also benefit from booting into 64 bit kernel (from my experience) hold down 6 and 4 while booting or read up on how to activate the 64 bit kernel by default in the Boot.plist preference file.
    I also recommend not using a "managed" library which will allow you to move your master RAWS around if needed, and create a workflow opportunity similar to video editing with online/offline media. The easiest way to do this is to decide on a folder you want to store all your RAW files, and then in the aperture import dialog where it says "store files in aperture library" - change that to your own folder, and decide on your own subfolder structure - (for example, use /"project name"/"year"/"month") or whatever makes most sense for you. I shoot weddings and never shoot more than 9999 pictures a wedding, so I just use "/project name" - This way when I need to archive a job and its raw masters, I can pull that Folder of Raws off my machine and move it on to backup, but i can still keep the library intact if I need to find a file, I can easily pull the raw back online.

  • Both mail and address book very slow to launch on 10.6 and 10.6.1

    Like unimaginably slow. After clicking on the applications, I was able to perform a google search, find this forum, and and start this thread before either application became active.
    I am running 10.6.1 and have had this problem since 10.6. not before.
    I upgraded my system, I did not install Snow Leopard fresh, and I really hope I dont have to to solve this problem. So much for the speed portion of the Snow Leopard improvements!
    Has anybody else seen this issue? I certainly hope so because it's terrible to have to track down a problem like this alone.
    Message was edited by: almostinverted

    Thank you for this link. Here is the process I used to fix it.
    1 - I had one smart group in address book, with a NOT variable. (if contact is NOT in any group)
    2 - click on the smart folder, wait a long time for it to be selected.
    3 - delete the smart folder
    4 - close address book
    5 - reboot.
    6 - both Mail and Address book now open very quickly. Problem solved
    Thanks again!
    EDIT:
    re-creating the same smart group brings back the same problem!!! So we have broken address book functionality in 10.6? just awesome....
    Message was edited by: almostinverted
    Message was edited by: almostinverted

  • Address Book - very slow search

    I get the spinning pizza after typing three letters into my search panel. It sometimes takes 2 or 3 minutes to find a contact. Anybody have any suggestions?
    I suspect my database is corrupt. I have saved it to back up and then selected my backup database. This didn't help.
    Jo Hauser

    Sometimes the search index needs to be replaced. I recommend following these steps:
    1 - Quit all applications
    2 - Open a Finder window and press Command-Shift-G
    3 - In the "Go to the folder" textbox, type: ~/Library/Application Support/AddressBook/
    4 - Press the Go button
    5 - Find the file named ABPerson.skIndexInverted and drag it to the trash
    6 - Open Address Book and try your search again
    These steps will delete Address Book's search index, and performing a search in Address Book afterward will rebuild the index from the database.

  • My imac is from 8/07 and although i have ad no problems llately it is very slow often showing the colorwheel between tasks.  any ideas beides buy new one

    My imac os from 2007 and still works great.  Even got the new Lion  pgrade.  The machine has become quite slow and goes to color wheel between tasks.
    Any ways to help sort of purchasing a new one

    Is your data backed up from prior to the upgrade?
    Did you ensure all your applications are known to be compatible on this list:
    http://roaringapps.com/apps:table
    Is Time Machine running?
    Is Spotlight indexing?
    How big is the hard drive, and how much free space does it have?

  • NYC LTE very slow / not showing on Verizon iPhone 5

    Hi,
    I'm having lots of issues on Verizon...the main issue being that since launch, the iPhone 5 has been slow, and connection changes from LTE to 3G to edge. Some times the 3G stays active for days no matter where in NYC I go or if I reboot, turn cellular data off and on..now, I do notice that resetting a the network settings will magically bring LTE back on...keep in mind that in manhattan these speeds suck, in other boroughs the speeds are ok, 5-10 mb... I work and live around midtown so it is like still having a 3G phone. Resetting the network settings works for a day or hours, but always goes back to the same issue of no LTE and the fix is the reset.
    Now, I have seen many people saying the same on Verizon forums, and some are on android. I was traveling around last week for thanksgiving and the speeds was great always on, never slow....came back to NYC and as soon as I turned on the phone at the airport the thing I get is 3G.. Anyone know what could be causing the problem? This is a new phone since I actually had apple replace it before my trip, but the same issues reemerges. I have even tried resetting everything and set the phone as a new iPhone, but it still has these issues.
    At this point I don't know if this is a software bug, hardware or network issue..any help will be greatly appreciated.

    Yeah it truly is mind boggling how fast this phone is. Compared it to my friends Galaxy S3 this past weekend and it left it in the dust.
    Him and I are always putting our phones head to head as he prefers Samsung phones and I prefer the iPhone. Needless to say, everything looks better on the iPhone. The only edge the Samsung had was the screen size, but even that was taken with a grain of salt. Standing outside in the sun, the iPhone screen comes through a lot brighter while you have to literally strain to see what's on the S3's screen.

  • When entering text into a table letters are very slow to show up.

    When I enter text into a table, the text loads VERY slowly. What's that about?

    Problem 1: In Table A, when adding or updating data, I want to select data from fields in records based on primary key in other tables. Add and update data works. But my popup "X" list is way too long. I want the popup "X" when adding or
    updating record in Table A to only give me the choice of records from Table B that matches the data I entered in a previous field in Table A, not all the records from Table B.
    For this question, you can create SortTable screen to sort the data based on table A and table B. is this what you need?

  • TS3274 Since upgrade to latest version my screen is very slow to show on the screen . IT IS impossible to put in a password as it seems to time out out

    There is a ime delay with everything I type . THIS SINCE upgrade to  os7. Can anyone suggest why?

    If the above doesn't work, try a reset.
    Hold down the Sleep/Wake button and the Home button at the same time for at least ten seconds, until the Apple logo appears
    Note: Data will not be affected.

  • My mac book pro very slow after update to Yosemite

    hi. my mac book very slow after I upgrade to Yosemite. Is anyone like me? How should I do?

    Yes, many are like you. Most of them have incompatible or poorly written software or not enough ram though. Download and run EtreCheck http://www.etresoft.com/etrecheck and post its result here so that we may get a look at your aystem.

  • 4Th Generation Time Capsule Running Backup very Slow

    I am having a problem with my 4th generation time capsule as it is running very slow , it shows that i need to backup 151 Gb data and for the last 2 days the device backup only 150 mb, pls advise what is the problem? setup of the wireless network seems fine to me without any problem
    please help

    When you use ethernet, make sure your wireless is turned off in the computer.
    It can be worthwhile isolating the TC to the Computer so there is nothing else happening.
    Also for Mavericks ensure you have ipv6 set correctly to link-local.
    A 100GB backup certainly should not take 20hours..
    Although the 2008 (gen1 TC is much slower than later versions).
    A first backup of the computer must deal with loads and loads of little files, as a warning can go slow.
    A different backup software will be just the same.. it is the speed over network and handling small files that is the issue. Once that first backup is done the later incrementals should not be a problem though.

  • Initializing laptop HD via Firewire very slow

    Hi all,
    I'm trying to initialize a new 80Gb laptop HD before installing a new copy of Panther on it for installation into a Mac mini. I'm doing the initialization, via a firewire cable and Macally enclosure, to a G4 MDD running Panther 10.3.9 using DiskUtility.
    The initialization is very slow, top showing DiskUtility using around 1% of the CPU most of the time. The initialization has been running for 24+ hours and it's still going. The progress bar on DiskUtility has barely moved since it started.
    Is the slowness a sign that my firewire port on the G4 motherboard is having a problem?
    And can I safely just quit DiskUtility and put the HD back in the mini and do the initialization and installation via the Panther install discs directly on the Mac mini? Or am I stuck with waiting until it ends, since otherwise I'll screw up the partition map on the HD or something?
    Any ideas would be greatly appreciated!
    Ed

    Hi Ed. Be sure in your disk utility the option "safety(s)" is/are not checked. This way the app writes zero
    on all your hd blocks and, more, if 7 pass or 35 pass is checked the time will be veeeery long to finish.
    Just initialize your disk the standard way, without any other option. You can also check your device integrity before init with the surface scan, this will take up more time but will ensure your device isn't defective. I've formatted many hd through FW cable to external enclosure, succesfully.
    regards
    Rob

  • Very Slow internet connection with WRT150-N Wireless Router

    I have a WRT150-N wireless router hooked up downstairs to the modem and I am upstairs right now with internet that is very slow, it shows it is 18 megabytes/second and the connection says poor (i have a wireless G card in this computer).  I have another computer that is about 10 feet away from the router with a wireless N card and it says that the connection is 160 megabytes/second, but again it is running very very slow.  The third computer is back upstairs by this one and it has a Wireless N USB adapter and is running about 170 megabytes per second.  They are all about the same speed in opening websites but again are very slow to do so.  Any ideas on what is going on or how I can get it faster?

    First of all, the speeds you are quoting all sound like Mbps (megabits per second) connection speeds, not data throughput speeds.  You really need to measure your actual download speed to tell what is actually going on with your system.
    Use speedtest.net and test your system.  Turn off all other computers except the test computer.  Test under the following conditions:
    1)  connect one computer, by wire, directly to your modem
    2)  connect the same computer, by wire, directly to your router
    3)  connect the same computer wireless to your router
    4)  connect your other computers, wirelessly to the router, one at a time
    Also, state the speed that you are paying your ISP for.
    Report your download and upload speeds for all of the above tests.
    Note that the speed that you are paying for should be about the same as your results from test 1 and 2 above.
    After you have done these tests, it will be much easier to tell where the problem is. 

  • Address Book is very very slow and mixes up data

    Address Book has been mixing up addresses. Many contacts have phone numbers and email addresses from other contacts. It's also become very, very slow. For example, making any change brings on about 30 to 60 seconds of the spinning ball.
    How do I fix it? What's going on with this thing?

    You are not alone..
    I am getting random contacts with the phone number repeating over 60 times. Deleting them is painfully slow.

  • Address book applescripting - slows computer via memory drain

    Hi,
    i've just got my new gleaming macbook pro - a return to mac after ~16 years. whew.
    I was a heavy user of categories and contacts in outlook - had two contact folders, A and B, with categories in each. Additionally for some categories there is a third field - location. In total there are 2500 contacts I deal with.
    To import my contacts was not trivial - i used little creatures O2M to bring over my messages, which worked well, but didn't give as great a result on contacts (lost a lot of fields). Then I used Abee on a csv file and found it was great - well worth the $10.
    I mapped my custom fields to related names custom fields.
    After a lot of reading i think that the best location for user defined fields (in my case group, category, and location) is as a custom named URL. This allows me to make Smart groups in address book to sort through these categories.
    So I wrote some applescript to move info from related names to URL fields. It steps through everyone in my address book and if the label "Group" exists in related names and the value is "B" then add a new URL and delete the related name label.
    The script is:
    tell application "Address Book"
    try
    repeat with this_person in every person
    set namestoremove to {}
    repeat with this_label in (get related name of this_person)
    if the label of this_label = "Group" and the value of this_label = "B" then
    make new url at end of urls of this_person with properties {label:"Group", value:"GroupB"}
    --properties of this_label
    set namestoremove to namestoremove & (id of this_label)
    --delete (related names of this_person whose id is id of this_label)
    end if
    end repeat
    repeat with name_id in namestoremove
    delete (related names of this_person whose id is name_id)
    end repeat
    save
    end repeat
    save
    end try
    end tell
    I have to acknowledge Trevor Harmon scripts for giving guidelines.
    I had to add the get statements to resolve properly the related names of the person
    The script works well on a small address book, but on the full book it slows to a crawl and stops.
    Of course I could re-import using abee - but that wont help me learn about address book scripts.
    Anyone see any problems that would cause the script to slow to a crawl? I assume its somehow consuming memory....

    Hello
    Accessing item in large list can be very slow in AppleScript unless appropriate coding method is used. Also the 'whose' filter can be very slow in filtering large collection of objects (though I doubt it is the case here).
    Anyway, you may try something like the script below which avoids the 'whose' filter.
    (NOT tested, for my environment is too for this.)
    --SCRIPT 1
    tell application "Address Book"
    repeat with p in (get every person)
    set p to p's contents -- # dereference the list item reference [1]
    tell p
    repeat with r in (get its related names)
    set r to r's contents -- # derefenence the list item reference [1]
    if r's label = "Group" and r's value = "B" then
    make new url at end of urls with properties {label:"Group", value:"GroupB"}
    delete r
    --delete related name id (get r's id) -- # alternative to the above [2]
    end if
    end repeat
    end tell
    --save addressbook
    end repeat
    save addressbook
    end tell
    [1] Dereferening the list item reference is costly operation in AppleScript.
    So dereferece it once (especially if it is used more than once in the iteration).
    [2] Use 'by ID' reference form if the 'delete r' does not work properly.
    (E.g., if r is in 'by index' reference form and there're multiple related names,
    'delete r' won't work properly due to changing index.)
    --END OF SCRIPT 1
    Or the following one which, in addition, implements a fast method to process large list.
    --SCRIPT 1a
    main()
    on main()
    script o
    property pp : {} -- # define large list as script object's property
    property rr : {} -- # idem
    tell application "Address Book"
    set pp to get every person
    repeat with p in my pp -- # use refenence to script object's property (i.e. my pp)
    set p to p's contents -- # dereference the list item reference [1]
    tell p
    set rr to get its related names
    repeat with r in my rr -- # use refenence to script object's property (i.e. my rr)
    set r to r's contents -- # dereference the list item reference [1]
    if r's label = "Group" and r's value = "B" then
    make new url at end of urls with properties {label:"Group", value:"GroupB"}
    delete r
    --delete related name id (get r's id) -- # alternative to the above [2]
    end if
    end repeat
    end tell
    --save addressbook
    end repeat
    save addressbook
    end tell
    end script
    tell o to run
    end main
    [1] Dereferening the list item reference is costly operation in AppleScript.
    So dereferece it once (especially if it is used more than once in the iteration).
    [2] Use 'by ID' reference form if the 'delete r' does not work properly.
    (E.g., if r is in 'by index' reference form and there're multiple related names,
    'delete r' won't work properly due to changing index.)
    --END OF SCRIPT 1a
    Hope this may help,
    H

Maybe you are looking for