Simple (?) Scripting in Excel Hurts My Head

I still find trying to AppleScript in Excel a maddening experience. Perhaps someone could help me out. I’ve got a table of info about classical music, including file paths. I autofilter for a criteria -- an album title, for instance -- and want to copy the paths from column A to the clipboard or an AppleScript variable.
Seems simple enough: copy the shown values from column A. Can’t pull it off and it’s driving me nuts. I keep getting the entire column of data, or the paths I want along with 65,000 blank values. I thought I’d gotten it by writing a VBA macro (on a PC) that successfully copies the info from column A for just the filtered values. I thought I’d trigger it with an AppleScript and have AppleScript grab them from the clipboard and send them on to iTunes. But when I ran the macro on my Mac, it gives me “Compile error. Can't find project or library.”
The VBA Macro:
Sub CopyPaths()
Sheets("Classical").Activate
' DETERMINE THE LAST ROW WITH ACTUAL DATA IN IT (AS OPPOSED TO WHAT EXCEL CALLS THE LAST ROW.
Lastdatarow = ActiveSheet.Cells.SpecialCells(xlLastCell).Row
Do While Not (Range("C" & Lastdatarow).Value > 0) And Lastdatarow > 1
Lastdatarow = Lastdatarow - 1
Loop
Range("A3:A" & Lastdatarow).Select
Selection.Copy
End Sub
I have both Office 2001 and 2004 and would settle for either version and either an all AppleScript or an AppleScript / VBA solution -- though 2004 produces so many “missing value” errors that 2001 is preferable.
Thanks,
Chris

Hi,
I think Excel X is 2001. In this version you can use 'UsedRange' to get just the range that contains data. This will get you the data:
tell application "Microsoft Excel"
set r to UsedRange of Worksheet 1
set d to Value of r
end tell
You get a list of lists, something like this:
{{"a", 1.0, "d"}, {"b", 2.0, "e"}, {"c", 3.0, "f"}}
where each sublist is a row. To get just the data from column 1:
tell application "Microsoft Excel"
set r to UsedRange of Worksheet 1
set d to Value of Column 1 of r
end tell
the result is:
{{"a"}, {"b"}, {"c"}}
To change this to string:
tell application "Microsoft Excel"
set r to UsedRange of Worksheet 1
set d to Value of Column 1 of r
end tell
set def_tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to {return}
set s to d as string
set AppleScript's text item delimiters to def_tid
return s
result:
"a
b
c"
To get a single list, use paragraphs:
tell application "Microsoft Excel"
set r to UsedRange of Worksheet 1
set d to Value of Column 1 of r
end tell
set def_tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to {return}
set s to d as string
set AppleScript's text item delimiters to def_tid
return (paragraphs of s)
result:
{"a", "b", "c"}
gl,

Similar Messages

  • Could someone please sketch out this simple script for me?

    Could someone please sketch out a simple java script for me. I will have a document with one background
    layer and a layer set (group) called "Analyze" that consists of 63 adjustment layers. The layer names in that "Analyze" group(folder) will be
    "01" ...through "63" with 01 on the bottom and 63 at the top. Initially, all of the adjustment layers will be invisible and  the
    group will be closed (not expanded). I need a simple  script that will check for the first invisible layer in that group
    and make it visible without selecting that layer nor expanding the group. The script has to check
    for the first invisible layer every time it runs because other actions may have turned off a layer in the set.
    The point of this is so I can hotkey flipping on the layers one at a time without expanding the set or
    changing focus off the  background. It seems it should be a simple loop, but I just can't wrap  my head
    around all the objects (e.g. Layer as opposed to Layers  and  Artlayer as opposed to Artlayers)
    and the constants constants.
    for (i = 63; i>0; i--){                 /* I have found layer indexes 0 are the topmost layer */
      if( layerset[i] == INVISIBLE){
               layerset[i] = VISIBLE;
                  break;
    Could someone please write me a simple script that would do this?
    Edit I found this and its very close to what I need:
    var doc = app.activeDocument;
    for(var i = 0 ; i < doc.layers.length;i++){
      doc.layers[i].visible = (i % 2 == 0);
    From here : Function to show/hide layer with Photoshop script (JSX) - Stack Overflow
    In my case I would rewrite it to this
    for(var i = 62; i >=0; i--){
         if(  !doc.layers[i].visible){
              doc.layers[i].visible =TRUE;
              break;
    My problem is I just need  to traverse the layers in my layerset "Analyze"
    How do  I reference just those? Is there a doc.layersets["Analyze"].layers[i].visible = TRUE?
    Message was edited by: Shawn Laughlin To add more information

    Well this works:
    var doc = app.activeDocument;
    var analyze = doc.layerSets.getByName("Analyze").layers
    for(var i = 62 ; i >= 0; i --){
        if (!analyze[i].visible){
            analyze[i].visible =1;
            break;
    Hard to believe TRUE is not a constant in java.

  • Simple Script works on 10.6 but not 10.5.8

    Hi,
    Brand new to Applescript...I made a simple script (saved as an application) to rename Excel Sheet Tabs and it works on my MBP (10.6.2) however when I try sharing with other users (10.5.8), it fails to carry out properly. It opens a blank workbook rather than the "test.xls" workbook and won't go any further. Am thinking it might be due to:
    1) where the script and .xls file were originally created/saved?
    2) 10.6.2 vs. 10.5.8?
    3) method of sharing? Tried attaching to Mac OSX Server Wiki, NAS and e-mailing but still wouldn't work.
    here's the script-
    tell application "Microsoft Excel"
    try
    open workbook workbook file name "test.xls"
    activate object worksheet "names"
    set myRange to range "A2" of worksheet "names"
    set myName to input box prompt "Please type a Student Name" title "Students"
    set value of myRange to myName
    set name of sheet 3 to myName
    set myRange to range "A3" of worksheet "names"
    set myName to input box prompt "Please type a Student Name" title "Students"
    set value of myRange to myName
    set name of sheet 4 to myName
    set myRange to range "A4" of worksheet "names"
    set myName to input box prompt "Please type a Student Name" title "Students"
    set value of myRange to myName
    set name of sheet 5 to myName
    set myRange to range "A5" of worksheet "names"
    set myName to input box prompt "Please type a Student Name" title "Students"
    set value of myRange to myName
    set name of sheet 6 to myName
    set myRange to range "A6" of worksheet "names"
    set myName to input box prompt "Please type a Student Name" title "Students"
    set value of myRange to myName
    set name of sheet 7 to myName
    set myRange to range "A7" of worksheet "names"
    set myName to input box prompt "Please type a Student Name" title "Students"
    set value of myRange to myName
    set name of sheet 8 to myName
    set myRange to range "A8" of worksheet "names"
    set myName to input box prompt "Please type a Student Name" title "Students"
    set value of myRange to myName
    set name of sheet 9 to myName
    set myRange to range "A9" of worksheet "names"
    set myName to input box prompt "Please type a Student Name" title "Students"
    set value of myRange to myName
    set name of sheet 10 to myName
    set myRange to range "A10" of worksheet "names"
    set myName to input box prompt "Please type a Student Name" title "Students"
    set value of myRange to myName
    set name of sheet 11 to myName
    set myRange to range "A11" of worksheet "names"
    set myName to input box prompt "Please type a Student Name" title "Students"
    set value of myRange to myName
    set name of sheet 12 to myName
    end try
    end tell
    Any suggestions will be greatly appreciated! THANKS!

    more info:
    a co-worker with a MacBook (10.5.8) was able to download the script and .xls file from our server and it worked...
    An eMac (10.4.11) was not able to run the script.
    All machines are running 2008 Office for Mac

  • Problem when down loading a simple report to Excel sheet

    HI Frenz,
    When I download a Simple report to excel , The Excel shows a blank column in between two column, which should not be the case.
    Kindly let me know ASAP
    Regards
    Irfan

    Hi,
    Check out the below samle code
    Download a report to excel with format (border, color cell, etc) 
    REPORT ZSIRI NO STANDARD PAGE HEADING.
    * this report demonstrates how to send some ABAP data to an
    * EXCEL sheet using OLE automation.
    INCLUDE OLE2INCL.
    * handles for OLE objects
    DATA: H_EXCEL TYPE OLE2_OBJECT,        " Excel object
          H_MAPL TYPE OLE2_OBJECT,         " list of workbooks
          H_MAP TYPE OLE2_OBJECT,          " workbook
          H_ZL TYPE OLE2_OBJECT,           " cell
          H_F TYPE OLE2_OBJECT.            " font
    TABLES: SPFLI.
    DATA  H TYPE I.
    * table of flights
    DATA: IT_SPFLI LIKE SPFLI OCCURS 10 WITH HEADER LINE.
    *&   Event START-OF-SELECTION
    START-OF-SELECTION.
    * read flights
      SELECT * FROM SPFLI INTO TABLE IT_SPFLI UP TO 10 ROWS.
    * display header
      ULINE (61).
      WRITE: /     SY-VLINE NO-GAP,
              (3)  'Flg'(001) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
              (4)  'Nr'(002) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
              (20) 'Von'(003) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
              (20) 'Nach'(004) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP,
              (8)  'Zeit'(005) COLOR COL_HEADING NO-GAP, SY-VLINE NO-GAP.
      ULINE /(61).
    * display flights
      LOOP AT IT_SPFLI.
      WRITE: / SY-VLINE NO-GAP,
               IT_SPFLI-CARRID COLOR COL_KEY NO-GAP, SY-VLINE NO-GAP,
               IT_SPFLI-CONNID COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
               IT_SPFLI-CITYFROM COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
               IT_SPFLI-CITYTO COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP,
               IT_SPFLI-DEPTIME COLOR COL_NORMAL NO-GAP, SY-VLINE NO-GAP.
      ENDLOOP.
      ULINE /(61).
    * tell user what is going on
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
         EXPORTING
    *           PERCENTAGE = 0
               TEXT       = TEXT-007
           EXCEPTIONS
                OTHERS     = 1.
    * start Excel
      CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
    *  PERFORM ERR_HDL.
      SET PROPERTY OF H_EXCEL  'Visible' = 1.
    *  CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING #1 = 'c:\kis_excel.xls'
    *  PERFORM ERR_HDL.
    * tell user what is going on
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
         EXPORTING
    *           PERCENTAGE = 0
               TEXT       = TEXT-008
           EXCEPTIONS
                OTHERS     = 1.
    * get list of workbooks, initially empty
      CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
      PERFORM ERR_HDL.
    * add a new workbook
      CALL METHOD OF H_MAPL 'Add' = H_MAP.
      PERFORM ERR_HDL.
    * tell user what is going on
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
         EXPORTING
    *           PERCENTAGE = 0
               TEXT       = TEXT-009
           EXCEPTIONS
                OTHERS     = 1.
    * output column headings to active Excel sheet
      PERFORM FILL_CELL USING 1 1 1 'Flug'(001).
      PERFORM FILL_CELL USING 1 2 0 'Nr'(002).
      PERFORM FILL_CELL USING 1 3 1 'Von'(003).
      PERFORM FILL_CELL USING 1 4 1 'Nach'(004).
      PERFORM FILL_CELL USING 1 5 1 'Zeit'(005).
      LOOP AT IT_SPFLI.
    * copy flights to active EXCEL sheet
        H = SY-TABIX + 1.
        PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID.
        PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID.
        PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM.
        PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO.
        PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME.
      ENDLOOP.
    * changes by Kishore  - start
    *  CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
      CALL METHOD OF H_EXCEL 'Worksheets' = H_MAPL." EXPORTING #1 = 2.
      PERFORM ERR_HDL.
    * add a new workbook
      CALL METHOD OF H_MAPL 'Add' = H_MAP  EXPORTING #1 = 2.
      PERFORM ERR_HDL.
    * tell user what is going on
      SET PROPERTY OF H_MAP 'NAME' = 'COPY'.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
         EXPORTING
    *           PERCENTAGE = 0
               TEXT       = TEXT-009
           EXCEPTIONS
                OTHERS     = 1.
    * output column headings to active Excel sheet
      PERFORM FILL_CELL USING 1 1 1 'Flug'(001).
      PERFORM FILL_CELL USING 1 2 0 'Nr'(002).
      PERFORM FILL_CELL USING 1 3 1 'Von'(003).
      PERFORM FILL_CELL USING 1 4 1 'Nach'(004).
      PERFORM FILL_CELL USING 1 5 1 'Zeit'(005).
      LOOP AT IT_SPFLI.
    * copy flights to active EXCEL sheet
        H = SY-TABIX + 1.
        PERFORM FILL_CELL USING H 1 0 IT_SPFLI-CARRID.
        PERFORM FILL_CELL USING H 2 0 IT_SPFLI-CONNID.
        PERFORM FILL_CELL USING H 3 0 IT_SPFLI-CITYFROM.
        PERFORM FILL_CELL USING H 4 0 IT_SPFLI-CITYTO.
        PERFORM FILL_CELL USING H 5 0 IT_SPFLI-DEPTIME.
      ENDLOOP.
    * changes by Kishore  - end
    * disconnect from Excel
    *      CALL METHOD OF H_EXCEL 'FILESAVEAS' EXPORTING  #1 = 'C:\SKV.XLS'.
      FREE OBJECT H_EXCEL.
      PERFORM ERR_HDL.
    *       FORM FILL_CELL                                                *
    *       sets cell at coordinates i,j to value val boldtype bold       *
    FORM FILL_CELL USING I J BOLD VAL.
      CALL METHOD OF H_EXCEL 'Cells' = H_ZL EXPORTING #1 = I #2 = J.
      PERFORM ERR_HDL.
      SET PROPERTY OF H_ZL 'Value' = VAL .
      PERFORM ERR_HDL.
      GET PROPERTY OF H_ZL 'Font' = H_F.
      PERFORM ERR_HDL.
      SET PROPERTY OF H_F 'Bold' = BOLD .
      PERFORM ERR_HDL.
    ENDFORM.
    *&      Form  ERR_HDL
    *       outputs OLE error if any                                       *
    *  -->  p1        text
    *  <--  p2        text
    FORM ERR_HDL.
    IF SY-SUBRC <> 0.
      WRITE: / 'Fehler bei OLE-Automation:'(010), SY-SUBRC.
      STOP.
    ENDIF.
    ENDFORM.                    " ERR_HDL
    Cheers,
    Chandru

  • Deleting characters in a simple script

    I have a simple script where I use a paragraph return and a % to indicate which lines I want to convert to a certain Applied Paragraph style. I'd like to remove the paragraph style and % adterwards. Here is the relevant part of my script so far (it contains A LOT of other find and replace functions:
    //Set the find options.
    app.findChangeTextOptions.caseSensitive = true;
    app.findChangeTextOptions.includeFootnotes = true;
    app.findChangeTextOptions.includeHiddenLayers = true;
    app.findChangeTextOptions.includeLockedLayersForFind = true;
    app.findChangeTextOptions.includeLockedStoriesForFind = true;
    app.findChangeTextOptions.includeMasterPages = true;
    app.findChangeTextOptions.wholeWord = false;
    //Header Paragraph Style
    app.findTextPreferences.findWhat = "^p%";
    app.changeTextPreferences.appliedParagraphStyle = "Character Header";
    app.documents.item(0).changeText();
    //Remove %
    app.findTextPreferences.findWhat = "^p%";
    app.changeTextPreferences.changeTo = ;
    app.documents.item(0).changeText();
    //Clear the find/change preferences after the search.
    app.findTextPreferences = NothingEnum.nothing;
    app.changeTextPreferences = NothingEnum.nothing;
    I don't know what character to use at the end of this line (app.changeTextPreferences.changeTo =) to indicate that I don't want to replace ^p% with anything, just remove it.

    Try this:
    app.changeTextPreferences.changeTo = "";

  • Simple scripting question

    OK, so I'm fairly sure this is a simple scripting issue, but I just cannot get my head around the scripting language.
    I am working on a DVD where the viewer has the option of watching the track once or having it loop continuously.
    There is not enough space on the disc to duplicate the track so that is not an option.
    Any help would e much appreciated.
    Tony

    This is a perfectly scenerio for Stories. It allows you to duplicate a title without increasing the space. Look in the manual and have a go at it. Come back if you have questions.

  • Simple scripting:  On frame (45) go back to first frame..??

    I am trying to do a simple script and I am having a huge brain fart.
    when I get to frame 45 I want the play head to go back to frame 1.  I have the below code but I am getting errors.  Can someone point my head in the right direction?
    <><><>
    onFrame (45) {
        this.gotoAndPlay(1);
    <><><>
    One error says that "is expecting semi-colon before or after first brace.....
    second possible error is "call to possible undefined method onFrame....
    Need help.

    If that is the first scene, the in the last frame (45) simply putting...
        gotoAndPlay(1);
    should work.
    If it is not the first scene, then you should label the first frame and use the label instead of the frame number...
        gotoAndPlay("firstFrameLabel");

  • Error while executing a simple script....

    Hi,
    I am trying to run the following simple script in Oracle 8i:
    UPDATE
    vcad_ocorrencias
    set tipo_situa_solic = 'E', desc_obs_atendente = 'ACERTO DE BASE -
    18/10/2004'
    where cod_solicitacao = 7
    and tipo_situa_solic in ('N', 'P')
    and cod_contrato_Inter not in ( 2247,2295,2296,2297,2278,2269,2168)
    and dthora_geracao < '07/10/2004'
    order by cod_contrato_inter;
    And it is returning the following message error:
    ERRO na linha 8:
    ORA-00933: SQL command not properly ended
    Well this script was made by a developer and now I have to run it in production environment...
    Does someone know why it is failing?

    Get rid of your 'order by statement'.
    order by cod_contrato_inter;
    Also make certain that the 'NLS_DATE_FORMAT' is set to 'DD/MM/YYYY' or change
    and dthora_geracao < '07/10/2004'
    to
    and dthora_geracao < to_date('07/10/2004','DD/MM/YYYY')
    UPDATE
    vcad_ocorrencias
    set tipo_situa_solic = 'E',
    desc_obs_atendente = 'ACERTO DE BASE - 18/10/2004' -- not sure if it is a date column
    where cod_solicitacao = 7
    and tipo_situa_solic in ('N', 'P')
    and cod_contrato_Inter not in ( 2247,2295,2296,2297,2278,2269,2168)
    and dthora_geracao < to_date('07/10/2004','DD/MM/YYYY')

  • Using report scripts in Excel - shameless plug for my blog

    I finished the second installment of my Blog, Using Report Scripts in Excel. It can be found at:
    http://glennschwartzbergs-essbase-blog.blogspot.com/

    Thank you Glenn! I just started to look into report script though we've had the tool for years. And look forward to your next installment.

  • HOW TO : Writing simple scripts in SQL Developer??

    Here is a simple script I run in SQL*Plus...
    the first SQL prints the QCSID, the second script prompts for a SID which is the QCSID from the first SQL... once provided it gives me the output I want...
    I just cannot do this in SQL DEVELOPER..... or Can I?
    select distinct qcsid from v$px_session;
    select sid,serial#,qcsid,qcserial#,degree,req_degree from v$px_session
    where qcsid in (select qcsid from v$px_session where sid='&sid');

    Ganesh,
    Simple substitution and defines work in SQL Developer scripts.
    I think the problem with running your script is that the first query results are not displayed before the window asking for the '&sid' value. That is the output to the 'screen output' tab is buffered and not synchronized with additional pop up (or dialog) windows. Is that correct?
    Currently:
    You can use substitution variables in the f5 'Run Script' but no bind variables.
    You can use bind variables in the f9 'Execute Statement' but no substitution statements.
    You can use anonymous PLSQL blocks, and packaged functions and procedures, so you can store per session state in PLSQL packages.
    -Turloch

  • How to export an ALV to Excel with its Header and Logo?

    Hi guys,
    I need to download to excel an ALV to excel. I already know how to download the ALV part, with its propertys, fonts, colors, etc. But I don't have a clue about how to download the header and the logo.
    Any suggestion?.
    Regards,
    Eric

    Hi Eric,
    Please check this link for sample code regarding LOGO to Excel
    How to Download ALV Output LOGO to Excel ?
    For Header to Excel check this link
    Export header of alv-oo into excel
    Hope this would help you.
    Good luck
    Narin

  • I need a simple script (Break Link To Style)

    Hi nice guys,
    Can someone please provide a simple script that will break the links to styles in all the paragraphs in a document.
    Thanks in advance
    Maria*
    *An non coder designer that simply is not capable of understanding javascript... (but I have tried!)

    Hi Maria,
    Jongware's post (http://forums.adobe.com/message/1890625#1890625) gave me a clue on how to do this.
    Give this a try:
    var i, j, myDoc = app.activeDocument,
              allStories = myDoc.stories,
              thisStory,
              thisPara;
    for (i = 1; i < allStories.length; i++) {
              thisStory = allStories[i];
              for (j = thisStory.paragraphs.length - 1; j >= 0; j--) {
                        thisPara = thisStory.paragraphs[j];
                        thisPara.applyParagraphStyle(myDoc.paragraphStyles[0], false)
    alert ("Job Done!");

  • Simple script in /usr/local/bin just won't start - SOLVED

    I put this really simple script for starting psi into my /usr/local/bin, set it a+xr and added /usr/local/bin to my path. However, I just can't start the damn thing.
    Here's the script itself (I really don't think there's something wrong with it, since if I type it in the shell it works fine):
    #!/bin/zsh/
    #start psi, never stop
    while true;
    do psi;
    done
    Here's my users $PATH:
    ─$ print $PATH
    /bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/opt/bin:/usr/local/bin:/opt/kde/bin:/opt/mozilla/bin:/opt/qt/bin
    Here's the permissions of the script:
    $ ls -lah /usr/local/bin
    total 4.0K
    drwxr-xr-x 2 root root 80 Dec 15 03:52 ./
    drwxr-xr-x 10 root root 240 Dec 10 18:55 ../
    -rwxrwxr-x 1 kamagurka users 60 Dec 15 03:51 psi.start*
    And here's what happens when I try to execute it:
    $ psi.start
    zsh: command not found: psi.start
    So, I'm either missing something incredibly obvious, or something freaky's going on here. I hope it's the former.
    EDIT: I had no idea where to put this, so I put it into Desktop Env since I'm trying to start a graphical app, but feel free to move it.
    EDIT: Yea, I was being a little dense.

    smoon wrote:Not sure if that's the problem, but try removing the trailing / (slash) from your script's shebang.
    See, something really obvious. Stupid, even. You can see, I don't do a lot of scripting.

  • Please help me to write a simple script.

    I wonder to tell a application named "Alien BBS", to input "right key" then wait for 5 seconds to input "left key".
    How can I do that by using a simple script ?
    tell application "AlienBBS"
    activate
    input ?
    end tell
    Please do me a favor to write~ cause I don't have any computer language background. Thanks in advance.

    Hi Tim,
    When you run an application it becomes a process. You can do stuff with the process. One thing is ui scripting which means that you're interacting with the user interface of tghe process. Some Processes don't have the same name as the application it was launched from, but usually they're named the same. You can try this:
    tell application "AlienBBS"
    activate
    end tell
    tell application "System Events"
    tell process "AlienBBS"
    keystroke (ascii character 29) -- right key
    delay 5
    keystroke (ascii character 28) -- left key
    end tell
    end tell
    You need to test it out and adjust.
    gl,

  • Simple Script and Launchd error

    Hi, I 'm just trying to run a simple script tu restart afp services over night, I have try so much things but my script just refuse to run, got error 127 and now just dont know what to do next to make it work. Thanks for your help.
    My script Location: /script/afprestrat.sh
    sudo chmod a+x /script/afprestrat.sh
    The script:
    #!/bin/bash
    serveradmin stop afp
    sleep 2
    serveradmin start afp
    PLIST location :
    /Library/LaunchDaemons/com.compagny.afprestart.plist
    the Plist:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
            <key>Label</key>
            <string>com.compagny.afprestart</string>
            <key>ProgramArguments</key>
            <array>
                    <string>sh</string>
                    <string>/script/afprestart.sh</string>
            </array>
            <key>StandardErrorPath</key>
            <string>/Users/admin/Documents/script/afprestart_err.log</string>
            <key>StandardOutPath</key>
            <string>/Users/admin/Documents/script/afprestart.log</string>
            <key>StartCalendarInterval</key>
            <dict>
                    <key>Hour</key>
                    <integer>4</integer>
                    <key>Minute</key>
                    <integer>05</integer>
            </dict>
    </dict>
    </plist>
    Command:
    sudo launchctl load -w /Library/LaunchDaemons/com.compagny.afprestart.plist
    Console error:
    com.apple.launchd com.compagny.afprestart Exited with code:127
    and afp service wasnt restart.
    Any hint will be really apprciated.
    thx !!!

    Ok now I got this:
    127
    com.compagny.afprestart
    Ligne 2 and ligne 4 of the script command not found thats mean:
    serveradmin: command not found
    will try to add the full path of the serveradmin command in the script:
    #!/bin/bash
    /Applications/Server.app/Contents/ServerRoot/usr/sbin/serveradmin stop afp
    sleep 2
    /Applications/Server.app/Contents/ServerRoot/usr/sbin/serveradmin start afp
    Any better idea ?
    thanks !

Maybe you are looking for