Is there a script to find text and make a hyperlink? (CS4)

I'm developing an online glossary for a book project. I would like to write a script for InDesign that will find all instances of a given text---let's say, "shoe"--and add a hyperlink to each glossary entry. Is this possible, or do I have to manually search across all docs in the book to insert links? My gut tells me there's a way, but I can't seem to put my finger on it. HELP!!!
Sincerely,
FrustratedEditorNerdTryingToTeachHerselfStuff 

Yes, it should be possible. Here is a script that you could use as a starting point.
Regards,
Kas

Similar Messages

  • Find text and replace with image - Help needed

    Hi,<br /><br />We need to place the images as inline in the appropriate places.<br /><br />texttexttext<<test1.eps>>texttexttexttexttexttext<<test2.eps>>texttexttexttexttexttext< <test3.eps>>texttexttexttexttexttext<<test4.eps>>texttexttexttexttexttext<<test5.eps>>text texttext<br /><br />This code is helpful for placing a single image at a time, we are unable to place all the images in one shot, can anyone help me out.<br /><br />I am not a programmer.<br /><br />-----------<br />var myDoc = app.activeDocument; <br />app.findPreferences = app.changePreferences = null; <br />var math=document.search("test.eps"); <br />for (i=math.length-1; i >=0; i--)<br />{ myDir = Folder.selectDialog(); <br />AllGraphics = Folder(myDir).getFiles('test.eps') <br />for (i=0; i<math.length; i++) { app.select(anil1[i]); <br />     myDoc.place(AllGraphics[i],false); } }<br />-----------<br /><br />Note: I have taken this code from forum and we have made some changes on this.<br /><br />Kavya

    Jongware,<br /><br />I try running it but gives errors:<br /><br />Error Number: 55<br />Error String: Object does not support the property or method 'changePreferences'<br />Line: 24<br />Source: app.findPreferences = app.changePreferences = null;<br /><br />This is the code I used<br /><br />// Find text and replace with image for InDesign CS3 <br />// http://www.adobeforums.com/webx?128@@.3bbf275d.59b6f012<br />var heyItsAnArray = new Array ( <br /><br />   "it contains this line!", <br /><br />   "as well as this one", <br /><br />   "or even more!", <br /><br />   "test.eps" ); <br /><br />for (arrayCount=0; arrayCount<heyItsAnArray.length; arrayCount++) <br /><br />{ <br /><br />   replaceImg (heyItsAnArray[arrayCount]); <br /><br /> } <br /><br />function replaceImg (name) <br /><br />{ var myDoc = app.activeDocument;  <br />     app.findPreferences = app.changePreferences = null;  <br />     var math=document.search(name); <br />     for (i=math.length-1; i >=0; i--)  <br />     { myDir = Folder.selectDialog();  <br />          AllGraphics = Folder(myDir).getFiles(name)  <br />          for (i=0; i<math.length; i++) { app.select(anil1[i]); <br />               myDoc.place(AllGraphics[i],false); <br /><br />               } <br /><br />          } <br /><br />     }<br /><br />Michael

  • I have been with Verizon since 1995 (I was an employee for years). I attempted to upgrade 2 of the 4 lines on our account today, but couldn't. We have an outstanding balance (though we have received no past due notice via mail, email, or text and make reg

    I have been with Verizon since 1995 (I was an employee for years). I attempted to upgrade 2 of the 4 lines on our account today, but couldn't. We have an outstanding balance (though we have received no past due notice via mail, email, or text and make regular payments every month) that I would love to pay, but our bank account number was stolen, so we can't access our account until Monday. Because we were unable to pay our outstanding balance, we were told we can't order the phones today during the special promotion (that ends today). No one can help us, though we have no way of doing anything until Monday when our bank reopens and can reimburse us for the money that was stolen from us. No one in customer service can help us (they can't process the order but not ship until after we make payment on Monday, they won't honor today's promotion on Monday due to our special circumstance, nothing). They stated that "corporate" makes the rules and they have no idea how I can reach corporate to discuss the matter. Without the promotion, we will be charged full price for the phones on Monday, which will cost us an additional $300.00. Any help would be appreciated. Thanks.

    I hope that you aren't complaining about dropped calls INSIDE your condo because no amount of switching or upgrading devices will solve that.
    VZW will not guarantee service inside of any structure. There are just too many factors. If the problem is inside then you might want to look at one of the following:
    1.) Network Extender (may cause issues for others in a condo or apartment style setting)
    2.) A Google Voice Number (Free with a Gmail email address), downloading Google Hangouts Dialer and forwarding your calls to the GVN so that you can make and receive calls over Wi-Fi.

  • Is it possible to change the colour of the Pages' skin, since it is grey, is there any way to change it and make it less tedious?

    Is it possible to change the colour of the Pages' skin, since it is grey, is there any way to change it and make it less tedious?

    fruhulda wrote:
    If you see any grey"background" if is on the left and that is the comment field.
    Hi fruhulda
    It's not the comment field which is a restrictive description.
    In fact it's the window's background.
    Yvan KOENIG (VALLAURIS, France) lundi 26 septembre 2011 12:08:45
    iMac 21”5, i7, 2.8 GHz, 4 Gbytes, 1 Tbytes, mac OS X 10.6.8 and 10.7.0
    My iDisk is : <http://public.me.com/koenigyvan>
    Please : Search for questions similar to your own before submitting them to the community

  • Can we programmatically search, hightlight text and make annotations in PDF using JQuery?

    How can i  programmatically search, hightlight text and make annotations in PDF using JQuery?

    JQuery is part of the OS and Acrobat/Reader is very isolated from the contact with the OS. If you were to write a plug-in in and add it to your copy of Acrobat/Reader you could then use that plug-in to access the OS shell.

  • I am heading to Mexico for a quick business trip, I only want to receive texts and make a call or two. What do I need to turn off to avoid ANY additional charges? Cellular Data/Data Roaming/MMS/visual voicemail? And should I turn wifi on and leave it on?

    I am heading to Mexico for a quick business trip, I only want to receive texts and make a call or two. What do I need to turn off to avoid ANY additional charges? Cellular Data/Data Roaming/MMS/visual voicemail? And should I turn wifi on and leave it on?
    I have a new Iphone 5s.

    wifi is not something you can be charged for

  • Is there any way to find text highlighted in adobe reader and automatically copy it to comment boxes?

    If I use a pdf highlighted in Adobe Reader (metro) in another PDF reading program, one with functionality to retrieve and list various annotations on the PDF, it simply finds "sticky note" as Adobe Reader highlights the text but fails to copy and paste it into a 'highlight' comment box. I intend to use another program with this feature automatic, from this point forward, but is there any way I can retroactively and automatically do this same task to all the other work I've done with Adobe Reader? It is, as I understand, a standard function of PDF annotation.
    Of course, ideally, I would also like this to be automatic in the future, as the Adobe Reader Metro App is generally well-designed, touch-interface wise. But this lacking feature makes finding my comments a much greater hassle than it should be (as I can see where I highlighted, but not what without traveling directly to the page)
    Also on a side note, I apparently can't delete a sticky note from within the app, what the hell

    You cannot enforce something like that. You have some options when the field is set up to allow rich text formatting, but the user can always change it.

  • Find text and replace with a pdf stored in the same folder

    Hello,
    I have a catalog that is updated every so often.  I have written a script to find/replace the text from a .txt file.  but i have a pdf that i want to insert that is part of it as well.  Inside the .txt file i have the name of the document.  and the pdf is stored inside the same folder as the original .indd and the .txt file.
    can someone point me at some examples on how this could be done. 
    Thanks

    I use this script: it puts a txt in a text frame, check the overflow and find/replace some words with a pdf. Hope this is helpful.
    Paolo
    /************************FLOW************************************************
    * This function looks for Overflows in the story and either resizes the           *
    * frame to the size of the margins (if necesary) or adds a new page and     *
    * a new frame, which is then linked to the previous frame.esizes the           *
    function flow(){
        for(var i = 0; i < app.activeDocument.pages.count(); i++)
            for(var b = 0; b < app.activeDocument.pages[i].textFrames.count(); b++)
                if(app.activeDocument.pages[i].textFrames[b].overflows == true )
                    var currentPage = myDocument.pages[i];
                    var myPageNo = currentPage.name;
                    var currentFrame=currentPage.textFrames[b];
                    var e =currentFrame.geometricBounds[0];
                    var f =currentFrame.geometricBounds[1];
                    var g =currentFrame.geometricBounds[2];
                    var h =currentFrame.geometricBounds[3];
                    if(myPageNo %2==0){
                        var myMargins =currentPage.marginPreferences;
                        var a = currentPage.bounds[0]+myMargins.top;
                        var b = currentPage.bounds[1]+myMargins.right;
                        var c = currentPage.bounds[2]-myMargins.bottom;
                        var d = currentPage.bounds[3]-myMargins.left;
                    else{
                        var myMargins =currentPage.marginPreferences;
                        var a = currentPage.bounds[0]+myMargins.top;
                        var b = currentPage.bounds[1]+myMargins.left;
                        var c = currentPage.bounds[2]-myMargins.bottom;
                        var d = currentPage.bounds[3]-myMargins.right;
                    if (g < c)
                        currentFrame.geometricBounds = [a,b,c,d];
                    else if (g==c){
                    var newPage = myDocument.pages.add(LocationOptions.AFTER, currentPage);
                    currentPage = newPage;
                    myPageNo = currentPage.name;
                    if(myPageNo %2==0){
                        var myMargins =currentPage.marginPreferences;
                        var a = currentPage.bounds[0]+myMargins.top;
                        var b = currentPage.bounds[1]+myMargins.right;
                        var c = currentPage.bounds[2]-myMargins.bottom;
                        var d = currentPage.bounds[3]-myMargins.left;
                        var newFrame = currentPage.textFrames.add({geometricBounds:[a,b,c,d]});
                        newFrame.textFramePreferences.textColumnCount = 7;
                        newFrame.previousTextFrame = currentFrame;
                    else{
                        var myMargins =currentPage.marginPreferences;
                        var a = currentPage.bounds[0]+myMargins.top;
                        var b = currentPage.bounds[1]+myMargins.left;
                        var c = currentPage.bounds[2]-myMargins.bottom;
                        var d = currentPage.bounds[3]-myMargins.right;
                        var newFrame = currentPage.textFrames.add({geometricBounds:[a,b,c,d]});
                        newFrame.textFramePreferences.textColumnCount = 7;
                        newFrame.previousTextFrame = currentFrame;
    //************************************END FLOW FUNCTION*********************************************
    /*******************TextPlacer***************************
        this script will add a text file in an existing text frame
        Questo file deve essere copiato nella cartella Script di InDesign
    function myGetBounds(myDocument, myPage){
    var myPageWidth = myDocument.documentPreferences.pageWidth;
    var myPageHeight = myDocument.documentPreferences.pageHeight
    if(myPage.side == PageSideOptions.leftHand){
    var myX2 = myPage.marginPreferences.left;
    var myX1 = myPage.marginPreferences.right;
    else{
    var myX1 = myPage.marginPreferences.left;
    var myX2 = myPage.marginPreferences.right;
    var myY1 = myPage.marginPreferences.top;
    var myX2 = myPageWidth - myX2;
    var myY2 = myPageHeight - myPage.marginPreferences.bottom;
    return [myY1, myX1, myY2, myX2];
    /*******************ImagePlacer***************************
        this script will addimages to the document by
        substituting them with the name of the image file
        between @s (file format included[@mypic.bmp@]),
        selecting them from a specified file (see below)
        and applying object styles to them, as well as
        applying the right tab i necesary.
        It then looks for overflows in the document. If an
        overset is found, it will resize to margin size the
        text frame and if overset continues, it will add a
        new page and frame, which then will be linked
        to the previous frame, allowing the story flow.
        Questo file deve essere copiato nella cartella Script di InDesign
    //Creates a new document using the specified document preset.
    //Replace "myDocumentPreset" in the following line with the name
    //of the document preset you want to use.
    var myDocument = app.documents.add(true,app.documentPresets.item("Preset"));
    //If the active document has not been saved (ever), save it.
    if(app.activeDocument.saved == false){
    //If you do not provide a file name, InDesign displays the Save dialog box.
    app.activeDocument.save(new File("/Users/Paolo/Desktop/Documento.indd"));
    function main()
    var myDocument = app.documents.item(0);
    var myPage = myDocument.pages.item(0);
    var myTextFrame = myPage.textFrames.add({geometricBounds:myGetBounds(myDocument,myPage)});
    myTextFrame.textFramePreferences.textColumnCount = 7;
    myTextFrame.place(File("/Users/Paolo/Desktop/text.txt"));
    //Place a text file in the text frame.
    //Parameters for TextFrame.place():
    //File as File object,
    //[ShowingOptions as Boolean = False]
    //You'll have to fill in your own file path.
    //Define GREP search
    var grepFind ="@@@.+@@@";
    //Folders name where there are pdf, must be in the same place of the file
    var myFiguresFolder = "testatine";
    // Applied paragraph style
    var myPStyle = myDocument.paragraphStyles.item("Paragraphstyle");
    var NextPStyleCS = myDocument.paragraphStyles.item("Par_Style");
    var NextPStyleEN = myDocument.paragraphStyles.item("Par_Style_en");
    var NextPStyleDE = myDocument.paragraphStyles.item("Par_Style_de");
    // Applied text style
    var myCStyle = myDocument.characterStyles.item("text");
    //Applied object style
    var myOStyle = "";
    var oStyle_1 = myDocument.objectStyles.item("Pictures");
    var oStyle_2 = myDocument.objectStyles.item("Pictures");
    var oStyle_3 = myDocument.objectStyles.item("Pictures");
    //MEASUREMENTS
    var maxWidth = 467; //Maximum width of an image
    var maxHeight = 666; //Maximum Height of an image
    var colWidth = 468; //Width of the main columb (340pt) + maximum Tab (128pt)
    var maxTab = 0;
    var xTab;
    var xtTab;
    var minTWidth = 340; //any image with a width below this will have the maximum Tab (maxTab) applied.
    var PWidth; //Width of the Picture
    var PHeight;//Picture Height
    var myTotal;
    //---------------------------------ALERTS---------------------------------\\
    var notSaved = "Documento non salvato; devi prima salvare il documento";
    var noFolder = "No such folder exists; "+myFiguresFolder;
    var noImageMessage = "No Images were found";
    var finished = " immagini sostituite"
    //---------------------------------ALERTS---------------------------------\\
    /************************END OF STORY*****************************************
    *  The object of this bit of programming is to add an empty paragraph break *
    *  at the end of the story, in order to make the actual script work in the case   *
    *  that the LAST paragraph were a TABLE                                                              *
    var findEnd_of_Story = "\\r(?=\\z)" //GREP for End of Story                        //
    app.findGrepPreferences = NothingEnum.nothing;                              //
    app.changeGrepPreferences = NothingEnum.nothing;                         //
    app.findGrepPreferences.appliedParagraphStyle = myPStyle;              //
    app.findGrepPreferences.findWhat = findEnd_of_Story;                      //
    var fItems = myDocument.findGrep();                                              //
    var myC = fItems.length-1;                                                             //
    if (fItems =!0){                                                                              //
        do{                                                                                             //
            if (fItems.appliedParagraphStyle = myPStyle){                          //
                cItem = fItems[myC]                                                          //
                app.changeGrepPreferences.changeTo = "$0\\r";                  //
        myDocument.changeGrep();                                                       //
    myC--;                                                                                           //
    while (myC >= 0);                                                                       //
    try{
    var myDocPath = myDocument.filePath; //Complete Path to the Current Document
    catch (myError){
    alert (notSaved);
    //throw("");
    return;
    var myFFldr =Folder(myDocPath+"/"+myFiguresFolder); //Complete Path in which the figures to be placed should be found
    if(myFFldr.exists){
        flow();
        app.findGrepPreferences = app.changeGrepPreferences = null;
        app.findGrepPreferences.findWhat = grepFind;
        var myFoundItems = app.activeDocument.findGrep();
        var myCounter = myFoundItems.length-1
        myTotal = myCounter+1;
        for (i = myCounter; i >=0; i--) {
            var myName = myFoundItems[i].contents.replace (/@/g, "");
            app.selection = myFoundItems[i];
            var fFig=app.selection[0];//Found text for
            var cPStyle= fFig.appliedParagraphStyle;
            var myFile = new File( myFFldr + "/" + myName);
            if (myFile.exists) {
                var cFig = fFig.place(myFile);
                var sFig = cFig[0].parent;
              switch (cPStyle){
                  case (myPStyle):
                  myOStyle =oStyle_1;
                  PWidth = sFig.geometricBounds[3] - sFig.geometricBounds[1];
                  PHeight = sFig.geometricBounds[2] - sFig.geometricBounds[0];
                  if (PWidth >= minTWidth){
                      xTab = (colWidth-PWidth);
                  else{
                      xTab =maxTab;
                  var currentPar = sFig.parent.paragraphs.item(0);
                  currentPar.leftIndent = xTab;
                  var nextPar= currentPar.insertionPoints[-1].paragraphs[0];
                  var nextParStyle = nextPar.appliedParagraphStyle;
                  if (nextParStyle == NextPStyleCS||nextParStyle ==NextPStyleEN||nextParStyle == NextPStyleDE){
                      xtTab = xTab
                  else {
                      xtTab = nextPar.leftIndent;
                  nextPar.leftIndent =xtTab;
                  sFig.appliedObjectStyle = myOStyle;
                  cPStyle = "";
                  break;
                  case (myPStyle):
                  myOStyle = oStyle_3;
                  sFig.appliedObjectStyle = myOStyle;
                  cPStyle = "";
                  break;
                  default:
                  myOStyle = oStyle_2;
                  sFig.appliedObjectStyle = myOStyle;
                  cPStyle = "";
                  break;
              var oFig = sFig;
              sFig = ""
    flow();
      //alert(myTotal + finished);
    else{
        alert(noFolder);
    var myDocument = app.documents.item(0);
    //Clear the find/change grep preferences.
    app.findGrepPreferences = NothingEnum.nothing;
    app.changeGrepPreferences = NothingEnum.nothing;
    //Set the find options.
    app.findChangeGrepOptions.includeFootnotes = false;
    app.findChangeGrepOptions.includeHiddenLayers = false;
    app.findChangeGrepOptions.includeLockedLayersForFind = false;
    app.findChangeGrepOptions.includeLockedStoriesForFind = false;
    app.findChangeGrepOptions.includeMasterPages = false;
    //Regular expression to use
    app.findGrepPreferences.findWhat = "<(.+?)>";
    //Apply the change to 24-point text only.
    //app.findGrepPreferences.pointSize = 24;
    //app.changeGrepPreferences.underline = true;
        var myFoundItems = app.activeDocument.findGrep();
        var myCounter = myFoundItems.length-1
        myTotal = myCounter+1;
        //alert("occorrenze" + myTotal);
        app.changeGrepPreferences.changeTo= "$1";
        app.changeGrepPreferences.appliedCharacterStyle= myDocument.characterStyles.item("head");
       myDocument.changeGrep();
      for (i = myCounter; i >=0; i--) {
            var myName = myFoundItems[i].contents.replace ("/</g", "");
            var myName = myFoundItems[i].contents.replace ("/>/g", "");
            app.selection = myFoundItems[i];
            var fFig=app.selection[0];//Found text for
            var myCStyle = myDocument.characterStyles.item("head");
            app.selection[0].applyCharacterStyle(myCStyle, true);
    //Clear the find/change preferences after the search.
    app.findGrepPreferences = NothingEnum.nothing;
    app.changeGrepPreferences = NothingEnum.nothing;
    main();

  • Anyway to Find text and replace with variable FM10?

    I've just been informed that the current documentation set I've done will have different versions. I've created a brand variable, but I was wondering whether there was a quick way to find the text I need to convert, then replace it with the variable I've created?
    Mark

    Unless Fm10 is different than FM7 in this regard, you can copy an instance of the NewBrand variable in the text flow, then do an
    Edit > Find/Change
    Find [Text:] [OldBrand]
    Change [By Pasting]
    The usual issue is that each paste is not just pasting the variable, but also pasting the formats of the source instance of the variable. If all instances of the target text are the same format, say "Body", then this is not a problem.
    Otherwise, use the [Change & Find] button. Tweak formats as you go.
    I imagine that there are aftermarket enhancements for this. In FM10, you might even be able to script it, but it the number of changes is manageable, [Change & Find] suffices.

  • How to make a script for find text object?

    Hi everyone
    I want to make a script for find and select text object and then find next, find next, and so on, but without any open dialog
    Is that possible make a script for this?
    app.findGrepPreferences = app.changeGrepPreferences = null;
    app.findGrepPreferences.findWhat = "(\[\x{2022}\])|(\x{25CF})";
    app.findGrep();
    thanks
    Regard

    You already have that. A script does not 'find, select, find next' - it finds all texts as soon as you execute the 'app.findGrep' command.

  • Rollover text and images in Captivate CS4

    Hi All,
    I am trying to create a rollover image and rollover caption that both appear at the same time when I move over a particular area of my slide.  In my example below i want to rollover the arm of the body and have the text and the image appear at the same time.  I have tried to put the 2 rollover areas over each other but this seems to give priority to whichever rollover area is on top.  Any hints to make this work would be of great help!!

    Hi there
    What you need to do is abandon each rollover type. Instead, insert a Rollover Slidelet. Then insert a Text Caption and an Image into the Slidelet area. Then on a single mouseover, display the slidelet. Time the Slidelet as needed.
    Either that or create a larger image containing both the Text Caption and the Image as a large consolidated image. Then just insert a Rollover Image that shows the larger consolidated image when moused over.
    Cheers... Rick
    Helpful and Handy Links
    Captivate Wish Form/Bug Reporting Form
    Adobe Certified Captivate Training
    SorcerStone Blog
    Captivate eBooks

  • Is there a script for apache to automatically make a "download as tar"

    link?
    For example if you run apache and set /some/folder as documentRoot, if there is no index.html or .php there it will display the folders and files.
    I want to make apache also display a link for eveyr folder such as "Download as tar" and it would automagically tar the folder and offer for download.
    Possible?

    Generally speaking, if a script doesn't run in a later version, you can put it in a subfolder withteh correct version number as the name and it will work. For CS3 that would be "Version 5.0 Scripts" without the quotes.
    That said, if you have Acrobat pro, it's probably easier to use the extract pages command...

  • Text and elements disappear in CS4 InDesign.

    I have 2  8.5x11 Indesign CS4 docs that I tried to place in one 11x17 doc side by side.  Text and linked graphics disappear.  Why?
    Thanks

    [Moved to InDesign Forum]
    Hunt

  • Is there a script to find and replace glyphs?

    I am using Adobe Illustrator CC 2014, Build 10.1.0.70.
    I am looking for a way to quickly find and change certain glyphs within a typeface much like InDesign's Find/Change feature with a script that runs through saved queries. Is this at all possible..?

    Hi Steve, thanks for your quick response.
    My apologies I should've made myself clearer... I was more thinking about a script to run a chain of preset saved find and replace queries together. I have 48 individual glyphs from one typeface that I need to consistently apply across whole ducunents. Rather than click through each glyph for every single document I come across I was hoping there was a way to automate the process.
    Thanks

  • Automator Find Text and Alert

    I am new to Automator and AppleScript. I need to create a simple application where I can drop txt files onto, the app would then search the document for the word "Failed". Then show a dialogue showing the result of the find. Please can someone point me in the right direction! Thank you in advance.

    Ok this is starting to get a bit unwieldy to post to the list so I also put a copy in my dropbox folder at  http://dl.dropbox.com/u/13002668/DropFile.scpt
    In addition to what it did before this will save the serial number and validation code to a file 'FailedBatterySerialNumbers.txt' on your Desktop. I added the name of the file that the serial number came from. Figured you might want to go back and reference the original file.
    The file looks like:
    Untitled 2.txt
    serial-number    4H6230BBVTH
    Battery Validation Code    NBD-75B1770F-02
    Untitled 2.txt
    serial-number    4H6230BBVTH
    Battery Validation Code    NBD-75B1770F-02
    enjoy, regards
    on open droppedFiles
      -- Set destination Folder on Desktop
              set destDir to (path to desktop) as text
              set destDir to alias (destDir & "FailedBatteries:")
      -- Set string to search for in log files
              set grepString to "failed"
      -- For each file dropped on us look for the grepString
      -- If found move the file to the destDir
              repeat with aFile in the droppedFiles
                        try
                                  set ret to do shell script "grep -i " & grepString & " " & quoted form of POSIX path of aFile
                                  tell application "Finder"  to move aFile to destDir
      saveData(aFile)
                        on error msg number num
                                  if num ≠ 1 then
                                            display dialog "Unknow errror: " & msg & " Number:" & num & " in file:" & aFile
                                  else
                                            display dialog "KGB:" & grepString & " not found in file:" & return & aFile
                                  end if
                        end try
              end repeat
    end open
    on saveData(aFile)
              try
                        set values to do shell script "grep -E '^serial-number|^Battery Validation Code' " & quoted form of POSIX path of aFile
              on error msg number num
                        if num ≠ 1 then
                                  display dialog "saveData:unknow errror: " & msg & " Number:" & num & " in file:" & aFile
                        else
                                  display dialog "saveData: string not found in file:" & return & aFile
                                  return
                        end if
              end try
              tell application "Finder" to set aFile to (name of aFile)
              set fileName to (path to desktop as text) & "FailedBatterySerialNumbers.txt"
              try
                        set fnum to open for access fileName with write permission
              on error msg number num
                            close access file fileName
                        display dialog "File error:" & msg & " number:" & num
                        return
              end try
              set ourEof to get eof of fnum
              write (aFile & return & values & return & return) to fnum starting at ourEof + 1
            close access file fileName
              return
    end saveData

Maybe you are looking for