Apple Script to move files no longer works in Sierra (Help)

I’ll make it work, I’ll just have to write up some documentation for my colleagues so that they can recompile the script with whatever folder name they need. It’s just a bummer we are forced to use our Mac to do this now instead of just being able to open the workflow in Notepad++ and change the folder name. None of us here are mac users, we just have one in the office to test things. I really appreciate the help, my colleague has been trying to find a solution for this for months and I literally spent 2 hours on this forum and already got something that works lol. Thanks for that. However, if anyone is keen enough to figure out how to get this to work with a workflow, by all means I’ll take it.

Here is an edited version.

-- Added Notes 9 folder support

set pathToApplicationSupport to path to application support from user domain as text # Edited according to StefanK's message

tell application "Finder"
	--set folderName to "folder name here" as text # DISABLED
	set successFlag to 0
	--set thisFolder to (target of front Finder window) as alias
	--set thisFolder to POSIX path of ((container of (path to me)) as text)
	set thisFolder to ((container of (path to me)) as alias)
	set folderName to name of thisFolder # ADDED
	
	set theTargetFolder to (pathToApplicationSupport & "Lotus Notes Data:")
	set theCourseFolder to (pathToApplicationSupport & "Lotus Notes Data:" & folderName)
	
	if (exists folder theTargetFolder) is false then
		set theTargetFolder to (pathToApplicationSupport & "IBM Notes Data:")
		set theCourseFolder to (pathToApplicationSupport & "IBM Notes Data:" & folderName)
	end if
	
	set filesToMove to (every file of thisFolder whose name extension is "nsf")
	
	if (exists folder theCourseFolder) is false then
		make new folder at theTargetFolder with properties {name:folderName}
	end if
	
	try
		move filesToMove to theCourseFolder
	on error
		display dialog "File(s) already exist. Do you wish to overwrite?" buttons {"Yes", "No"}
		if the button returned of the result is "Yes" then
			move filesToMove to theCourseFolder with replacing
		else
			set successFlag to 1
		end if
		
	end try
	
	if successFlag = 0 then
		display dialog "File(s) moved successfully." buttons {"OK"}
	else
		display dialog "File(s) not moved." buttons {"OK"}
	end if
	
end tell

It defines the destination folder (folderName) according to the name of the folder in which you put the nrs files and the application itself.

Source Folder :
/Users/myHome/Desktop/my Container/
double click me.app
2017-01-06T10.57.34.nsf
2017-01-06T11.01.03.nsf

After use :
/Users/myHome/Desktop/my Container/
double click me.app

Destination folder :
/Users/myHome/Library/Application Support/Lotus Notes Data/
my Container
2017-01-06T10.57.34.nsf
2017-01-06T11.01.03.nsf

If you change the name of your folder the files will be moved in an other folder as described below.
Source Folder :
/Users/myHome/Desktop/Nabuchodonosor/
double click me.app
2017-01-04T10.57.34.nsf
2017-01-04T11.01.03.nsf

After use :
/Users/myHome/Desktop/ Nabuchodonosor/
double click me.app

Destination folder :
/Users/myHome/Library/Application Support/Lotus Notes Data/
Nabuchodonosor
2017-01-04T10.57.34.nsf
2017-01-04T11.01.03.nsf

Yvan KOENIG running Sierra 10.12.2 in French (VALLAURIS, France) vendredi 6 janvier 2017 19:13:44

@Yvan, my English is not better than yours

@myztklkev You can prompt the user to select the folder and enter a folder name


...
set thisFolder to choose folder with prompt "Choose source folder"
...
set folderName to text returned of (display dialog "Enter Folder name" default answer "")
...

I found a reason explaining that the workflow failed.
It uses linefeed as line break character.
Pasting the script in it inserted text using return as line break character.

Here is the document.workflow in which I inserted my script with the correct linefeeds.

<?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>AMApplicationBuild</key>
	<string>381</string>
	<key>AMApplicationVersion</key>
	<string>2.4</string>
	<key>AMDocumentVersion</key>
	<string>2</string>
	<key>actions</key>
	<array>
		<dict>
			<key>action</key>
			<dict>
				<key>AMAccepts</key>
				<dict>
					<key>Container</key>
					<string>List</string>
					<key>Optional</key>
					<true/>
					<key>Types</key>
					<array>
						<string>com.apple.applescript.object</string>
					</array>
				</dict>
				<key>AMActionVersion</key>
				<string>1.0.2</string>
				<key>AMApplication</key>
				<array>
					<string>Automator</string>
				</array>
				<key>AMParameterProperties</key>
				<dict>
					<key>source</key>
					<dict/>
				</dict>
				<key>AMProvides</key>
				<dict>
					<key>Container</key>
					<string>List</string>
					<key>Types</key>
					<array>
						<string>com.apple.applescript.object</string>
					</array>
				</dict>
				<key>ActionBundlePath</key>
				<string>/System/Library/Automator/Run AppleScript.action</string>
				<key>ActionName</key>
				<string>Run AppleScript</string>
				<key>ActionParameters</key>
				<dict>
					<key>source</key>
					<string>-- Version 1.2 Click Me Script
-- Updated Jan. 06, 2016
-- Added Notes 9 folder support

set pathToApplicationSupport to path to application support from user domain as text

tell application "Finder"
	set folderName to "folder name here" as text
	set successFlag to 0
	--set thisFolder to (target of front Finder window) as alias
	--set thisFolder to POSIX path of ((container of (path to me)) as text)
	set thisFolder to ((container of (path to me)) as alias)
	--set folderName to name of thisFolder
	
	set theTargetFolder to (pathToApplicationSupport & "Lotus Notes Data:")
	set theCourseFolder to (pathToApplicationSupport & "Lotus Notes Data:" & folderName)
	
	if (exists folder theTargetFolder) is false then
		set theTargetFolder to (pathToApplicationSupport & "IBM Notes Data:")
		set theCourseFolder to (pathToApplicationSupport & "IBM Notes Data:" & folderName)
	end if
	
	set filesToMove to (every file of thisFolder whose name extension is "nsf")
	
	if (exists folder theCourseFolder) is false then
		make new folder at theTargetFolder with properties {name:folderName}
	end if
	
	try
		move filesToMove to theCourseFolder
	on error
		display dialog "File(s) already exist. Do you wish to overwrite?" buttons {"Yes", "No"}
		if the button returned of the result is "Yes" then
			move filesToMove to theCourseFolder with replacing
		else
			set successFlag to 1
		end if
		
	end try
	
	if successFlag = 0 then
		display dialog "File(s) moved successfully." buttons {"OK"}
	else
		display dialog "File(s) not moved." buttons {"OK"}
	end if
	
end tell</string>
				</dict>
				<key>BundleIdentifier</key>
				<string>com.apple.Automator.RunScript</string>
				<key>CFBundleVersion</key>
				<string>1.0.2</string>
				<key>CanShowSelectedItemsWhenRun</key>
				<false/>
				<key>CanShowWhenRun</key>
				<true/>
				<key>Category</key>
				<array>
					<string>AMCategoryUtilities</string>
				</array>
				<key>Class Name</key>
				<string>RunScriptAction</string>
				<key>InputUUID</key>
				<string>0F225918-9142-442F-92A9-B9032A232B6F</string>
				<key>Keywords</key>
				<array>
					<string>Run</string>
				</array>
				<key>OutputUUID</key>
				<string>F8B2933E-DE4D-4D38-88BB-49C5F86E6A27</string>
				<key>UUID</key>
				<string>6C8E865E-235B-44E0-BA48-CE29DBD45F57</string>
				<key>UnlocalizedApplications</key>
				<array>
					<string>Automator</string>
				</array>
				<key>arguments</key>
				<dict>
					<key>0</key>
					<dict>
						<key>default value</key>
						<string>on run {input, parameters}
	
	(* Your script goes here *)
	
	return input
end run</string>
						<key>name</key>
						<string>source</string>
						<key>required</key>
						<string>0</string>
						<key>type</key>
						<string>0</string>
						<key>uuid</key>
						<string>0</string>
					</dict>
				</dict>
				<key>conversionLabel</key>
				<integer>0</integer>
				<key>isViewVisible</key>
				<true/>
				<key>location</key>
				<string>309.500000:498.000000</string>
				<key>nibPath</key>
				<string>/System/Library/Automator/Run AppleScript.action/Contents/Resources/English.lproj/main.nib</string>
			</dict>
			<key>isViewVisible</key>
			<true/>
		</dict>
	</array>
	<key>connectors</key>
	<dict/>
	<key>workflowMetaData</key>
	<dict>
		<key>workflowTypeIdentifier</key>
		<string>com.apple.Automator.application</string>
	</dict>
</dict>
</plist>

I edited the text according to what I discovered some minutes ago.
The problem was that in the block containing the real AppleScript code, the ampersand characters “&” required to be encoded as “&”
I can’t do the changes above because they would be automatically destroyed.
You may see below the lines in which some changes must be applied - highlighter in underlined bold.

-±±±±±±±±±±±±±±
set theTargetFolder to (pathToApplicationSupport & “Lotus Notes Data:”)
set theCourseFolder to (pathToApplicationSupport & “Lotus Notes Data:” & folderName)

if (exists folder theTargetFolder) is false then
set theTargetFolder to (pathToApplicationSupport & “IBM Notes Data:”)
set theCourseFolder to (pathToApplicationSupport & “IBM Notes Data:” & folderName)
end if
-±±±±±±±±±±±±±±

I used the edited app here under 10.12.2 and it moved the files to the folder
“/Users/myHome/Library/Application Support/Lotus Notes Data/folder name here/”

Of course I am unable to reproduce what you use to pass it the name of the destination folder.

Test it on your machine.
If it fails I assumes that it’s the process inserting the folder name which plays the fool.

You may send a mail to : k o e n i g . y v a n @ s f r . f r
so that I may send you the Click Me .app with the edited workflow.

Just a question. There is a space between “Me” and “.app” in the app name. May it be the origin of your problem.
Maybe it was not here in the past and the scheme supposed to insert the folder name is fooled by that.

Yvan KOENIG running Sierra 10.12.2 in French (VALLAURIS, France) vendredi 6 janvier 2017 19:27:53

sadly we can’t trust our users to do anything on their own properly. We have this script because most of our users are not competent enough to move the files manually to the IBM Notes Data folder, so getting them to pick the directory would be just as bad.

That’s all jibberish to me unfortunately. This workflow/script works in every version of Mac OS that we’ve tried except Sierra.

I didn’t even notice you post this. I will have to take a look, and if it works good I will use it, it definitely seems like a better alternative then having to recompile the script every time. I greatly appreciate all the help.

Edit: This is fantastic! thank you

In the original script, thisFolder is the folder containing the script and the files to move.
There is no need to define it thru a dialog.

The instruction:
set folderName to text returned of (display dialog “Enter Folder name” default answer “”)
makes sense.

Honestly, I have some difficulties to understand the problem.
At this time I know that folderName was defined in Notepad++.
This doesn’t help because every word processor would do the job.
But this tell us that the sender is able to enter the directory and more, to enter in the package named click me.app to reach the file named document.wflow.

This means that this sender is able to navigate in the hierarchy:

.
SourceFolder
Click Me.app
Contents
document.wflow

I have an idea which seems to be viable.
What if we store the folderName in a text file stored in the folder with the script

We would have:

Source Folder :
/Users/myHome/Desktop/my Container/
double click me.app
folderNameInside.txt a text file containing the name to use. Mathusalem for instance
2017-01-06T10.57.34.nsf
2017-01-06T11.01.03.nsf

After use :
/Users/myHome/Desktop/my Container/
double click me.app
folderNameInside.txt a text file containing the name to use. Mathusalem for instance

Destination folder :
/Users/myHome/Library/Application Support/Lotus Notes Data/
Mathusalem
2017-01-06T10.57.34.nsf
2017-01-06T11.01.03.nsf

To do that, save the script below as an application named “double click me.app”

-- Added Notes 9 folder support

set pathToApplicationSupport to path to application support from user domain as text

tell application "Finder"
	--set folderName to "folder name here" as text
	set successFlag to 0
	--set thisFolder to (target of front Finder window) as alias
	--set thisFolder to POSIX path of ((container of (path to me)) as text)
	set thisFolder to ((container of (path to me)) as alias)
	
	# builds the path to the text file containing the filename to use
	set theTextFile to (thisFolder as text) & "folderNameInside.txt"
	# Read the text file
	tell me to set maybe to (read file theTextFile)
	# Drops the possible line breaks available in the text file
	set foldername to paragraph 1 of maybe
	
	set theTargetFolder to (pathToApplicationSupport & "Lotus Notes Data:")
	set theCourseFolder to (pathToApplicationSupport & "Lotus Notes Data:" & foldername)
	
	if (exists folder theTargetFolder) is false then
		set theTargetFolder to (pathToApplicationSupport & "IBM Notes Data:")
		set theCourseFolder to (pathToApplicationSupport & "IBM Notes Data:" & foldername)
	end if
	
	set filesToMove to (every file of thisFolder whose name extension is "nsf")
	
	if (exists folder theCourseFolder) is false then
		make new folder at theTargetFolder with properties {name:foldername}
	end if
	
	try
		move filesToMove to theCourseFolder
	on error
		display dialog "File(s) already exist. Do you wish to overwrite?" buttons {"Yes", "No"}
		if the button returned of the result is "Yes" then
			move filesToMove to theCourseFolder with replacing
		else
			set successFlag to 1
		end if
		
	end try
	
	if successFlag = 0 then
		display dialog "File(s) moved successfully." buttons {"OK"}
	else
		display dialog "File(s) not moved." buttons {"OK"}
	end if
	
end tell

For my tests, fileNameInside.txt contained :
[format]
Mathusalem
[/format]

Yvan KOENIG running Sierra 10.12.2 in French (VALLAURIS, France) vendredi 6 janvier 2017 21:42:39

I appreciate the further support but the script you came up with that uses the folder name that the nsf’s and the clickme resides in will work perfectly for us. So we will just have to put the nsf’s and the click me in the properly named folder before we send the zip to users which is just as easy/if not easier than being able to edit the folder name in the workflow file. And you are correct, any file editor will do, we just use notepad++ Thank you again for all your support, you just made our lives here much easier again.

I added comments to message #14 but I decided to post them here so that I hope that you will see them.

I edited the text according to what I discovered some minutes ago.
The problem was that in the block containing the real AppleScript code, the ampersand characters “&” required to be encoded as “&”
I can’t do the changes above because they would be automatically destroyed.
You may see below the lines in which some changes must be applied - highlighter in underlined bold.

-±±±±±±±±±±±±±±
set theTargetFolder to (pathToApplicationSupport & “Lotus Notes Data:”)
set theCourseFolder to (pathToApplicationSupport & “Lotus Notes Data:” & folderName)

if (exists folder theTargetFolder) is false then
set theTargetFolder to (pathToApplicationSupport & “IBM Notes Data:”)
set theCourseFolder to (pathToApplicationSupport & “IBM Notes Data:” & folderName)
end if
-±±±±±±±±±±±±±±

I used the edited app here under 10.12.2 and it moved the files to the folder
“/Users/myHome/Library/Application Support/Lotus Notes Data/folder name here/”

Of course I am unable to reproduce what you use to pass it the name of the destination folder.

Test it on your machine.
If it fails I assumes that it’s the process inserting the folder name which plays the fool.

You may send a mail to : k o e n i g . y v a n @ s f r . f r
so that I may send you the Click Me .app with the edited workflow.

Just a question. There is a space between “Me” and “.app” in the app name. May it be the origin of your problem.
Maybe it was not here in the past and the scheme supposed to insert the folder name is fooled by that.

Yvan KOENIG running Sierra 10.12.2 in French (VALLAURIS, France) dimanche 8 janvier 2017 18:37:42

It’s not a big deal, we don’t need to use the workflow and I’m guessing it was just set up that way originally by someone with barely more experience than me with applescript and from what I hear he got the workflow elsewhere and just inserted his script. Your pure applescript that you came up with using the starting folder name works fine for us and I tested it successfully on both our machines. Once again though I thank you for your vigilance

Browser: Firefox 50.0

Looking at the script I’m noticing that at a few places strings are used rather than Finder or Alias specifiers.

For example theCourseFolder is just an HFS path.
I’m not sure that it helps but it is better programming habit to write

 move filesToMove to folder theCourseFolder

@myztklkev

Please do not quote always the entire message. Quote only the relevant parts.

Hello Stefan

I was surprised when I saw this instruction in the original code. As I wrote many times, I hate the Finder so I’m not accustomed to its exact behavior. I was ready to edit the instruction but curiosity was too big and I tested. As it is the instruction did its duty so I choose to leave them untouched.
This morning I re-tested :
the code using the name of the folder to move to define the name of the target one.
The same encapsulated in the workflow
the code using the name stored in a text file to define the name of the target one.
All of them behaved flawlessly.
I would be surprised if this antediluvian beast named Finder change its behavior.
I looked again in Finder’s dictionary. Specifier is used several times but is never defined.
It seems that its definition is not really precise.

Move and Duplicate behave well when the target folder is defined by a string. The old beast knows that when it’s asked to execute them the target is necessarily a folder and it behaves accordingly.

Yvan KOENIG running SIerra 10.12.2 in French (VALLAURIS, France) lundi 9 janvier 2017 10:50:38

So I’m running into another problem now, for some reason when we take the click me file and put it in a folder with an nsf and then zip the folder. I can email that file to a mac user and when they open it (which auto-extracts the folder) and run the click me it works, but if I put the file on a download server and the user downloads via a link the click me file will not work until you move it out of the containing folder and put it back in which make absolutely zero sense to me because the zip is the exact same file and downloading it from a link should make no difference unless web browsers handle zips differently.

EDIT: ok, So i discovered that this functions like this no matter what script we use. I tried our original script with the workflow and if you copy it out of the containing folder to say the desktop and then move it back to the containing folder, it runs and moves the files. So something the way the browser handles the zip in Sierra or something breaks something.

I apologizes but I have absolutely no practice of networks and so have no idea of what may fail.
Here is the code in which I added several say instructions.
Save it as an application and make tests with it using the network scheme.
If you listen carefully I hope that you will be able to discover which instruction has an odd behavior.

-- added height say instructions to trace the execution

set pathToApplicationSupport to path to application support from user domain as text # Edited according to StefanK's message
say "Point 1 .-.-.-." & pathToApplicationSupport
display dialog "Point 1 .-.-.-." & pathToApplicationSupport  # ADDED
tell application "Finder"
	--set folderName to "folder name here" as text # DISABLED
	set successFlag to 0
	--set thisFolder to (target of front Finder window) as alias
	--set thisFolder to POSIX path of ((container of (path to me)) as text)
	set thisFolder to ((container of (path to me)) as alias)
	tell me to say "Point 2 .-.-.-." & (thisFolder as text)
	display dialog "Point 2 .-.-.-." & (thisFolder as text)  # ADDED
	set folderName to name of thisFolder # ADDED
	tell me to say "Point 3 .-.-.-." & folderName
	display dialog "Point 3 .-.-.-." & folderName  # ADDED
	set theTargetFolder to (pathToApplicationSupport & "Lotus Notes Data:")
	tell me to say "Point 4 .-.-.-." & theTargetFolder
	display dialog "Point 4 .-.-.-." & theTargetFolder  # ADDED
	set theCourseFolder to (pathToApplicationSupport & "Lotus Notes Data:" & folderName)
	tell me to say "Point 5 .-.-.-." & theCourseFolder
	display dialog "Point 5 .-.-.-." & theCourseFolder  # ADDED
	
	if (exists folder theTargetFolder) is false then
		set theTargetFolder to (pathToApplicationSupport & "IBM Notes Data:")
		tell me to say "Point 6 .-.-.-." & theTargetFolder
		display dialog "Point 6 .-.-.-." & theTargetFolder  # ADDED
		set theCourseFolder to (pathToApplicationSupport & "IBM Notes Data:" & folderName)
		tell me to say "Point 7 .-.-.-." & theCourseFolder
		display dialog "Point 7 .-.-.-." & theCourseFolder  # ADDED
	end if
	
	set filesToMove to (every file of thisFolder whose name extension is "nsf")
	
	if (exists folder theCourseFolder) is false then
		tell me to say "Point 8,  must create the folder : " & folderName
		display dialog "Point 8,  must create the folder : " & folderName  # ADDED
		make new folder at theTargetFolder with properties {name:folderName}
	end if
	
	try
		move filesToMove to theCourseFolder
	on error
		display dialog "File(s) already exist. Do you wish to overwrite?" buttons {"Yes", "No"}
		if the button returned of the result is "Yes" then
			move filesToMove to theCourseFolder with replacing
		else
			set successFlag to 1
		end if
		
	end try
	
	if successFlag = 0 then
		display dialog "File(s) moved successfully." buttons {"OK"}
	else
		display dialog "File(s) not moved." buttons {"OK"}
	end if
	
end tell

Yvan KOENIG running Sierra 10.12.2 in French (VALLAURIS, France) mercredi 11 janvier 2017 21:16:46

Thanks, I’ll give it a try but I feel like it’s an Apple problem at this point. Not sure the say commands will help as the script runs “Successfully” even when it doesn’t move the files. I tested it through firefox and safari and it’s the same, but emailing the exact same zip file directly (not downloading it with a web browser but a mail client) it runs fine. So that says to me that behavior with the way the web browsers download the zips is the problem which sounds weird but that’s what’s happening.

Edit: when it doesn’t move the files it just says Point 3 B, when I copy the click me out of the folder and back in and run it point 3 mentions something about a folder. So seems that’s where it’s failing. No idea how it’s being affected by downloading from a browser though.

I think the explanation might be here: https://eclecticlight.co/2016/06/16/macos-sierra-will-break-many-installers-and-updaters/

You wrote that the script said Point 3 B means that it executed the instruction:
set folderName to name of thisFolder
and that he got “B” as the name of the passed folder.
It means also that the instruction
set theTargetFolder to (pathToApplicationSupport & “Lotus Notes Data:”)
was not executed or failed.

I hoped that you would listen with sufficient care to write what accompanied “Point 1” and “Point 2” so that I may know if the script correctly extracted the values supposed to be stored in the variables pathToApplicationSupport (for Point 1) and thisFolder (for Point 2)

I added 8 instructions supposed to display the text which is said just before.
Please make a test after saving this new version of the script posted in my preceding message.
When one dialog will appear, take a screenshot of this dialog then click the button OK.
Last not least, type in a new message the exact text displayed by each dialog.

Normally you would get something like
“Point 1 .-.-.-.HardDiskName:Users:yourHome:Library:Application Support:”
“Point 2 .-.-.-.the path to the folder containing the script and the nsf files:”
“Point 3 .-.-.-.the name of the folder containing the script and the nsf files”
“Point 4 .-.-.-.HardDiskName:Users:yourHome:Library:Application Support:Lotus Notes Data:”
“Point 5 .-.-.-.HardDiskName:Users:yourHome:Library:Application Support:Lotus Notes Data:” completed by the name of the folder containing the script and the nsf files

For me it’s time to switch off, I will be back tomorrow.

Yvan KOENIG running Sierra 10.12.2 in French (VALLAURIS, France) mercredi 11 janvier 2017 22:38:53

It was saying way to much for me understand it all clearly, let alone to write it down. Point 2 was just a bunch of random numbers and letters it sounded like. I just ran the script under both working and not working conditions and listened for differences. Point 3 was the only one I noticed that sounded different in not working conditions which is why I only mentioned it. I assume 1 and 2 ran correctly as it sounded the same when I ran the script under working conditions

Your explanation about it failing though sounds very similar to that link I posted explaining that gatekeeper is the culprit.

I’ll try your one with prompts tomorrow.

Assuming that the problem is really linked to GateKeeper, here is an alternate scheme.

No need to put an application in the archived folder.
Distribute to your correspondants the script below saved as an application.
When they will receive your zipped folder, they will no longer have to double click it to expand it then double click an enclosed application.
They will just have to drag & drop the archive onto the new application.
This one will expand the archive and move the enclosed nsf files.
As this new scheme doesn’t rely upon an app enclosed in the expanded archive I assume that there will be no problem with GateKeeper.

(*
Save this script as an application.
Drag and drop a zip archive on it.
It will expand the archive then move the enclosed nsf files to their required location.

KOENIG Yvan (VALLAURIS, France)
2016/01/12
*)

on run
	# Entry point used if you double click the application's icon
	my germaine(choose file with prompt "Choose a zip archive" of type "zip")
end run

on open sel
	# Entry point used if you drop a zip file on the application's icon
	set maybe to sel's item 1
	tell application "Finder"
		if name extension of maybe is not "zip" then error "The dropped item must be a zip archive!"
	end tell
	my germaine(maybe)
end open


on germaine(theZip)
	# Get the path to the folder containing the dropped archive
	tell application "Finder"
		set archiveContainer to container of theZip as alias
	end tell
	
	set quotedPOSIXZip to quoted form of POSIX path of theZip
	set quotedPOSIXarchiveContainer to quoted form of POSIX path of archiveContainer
	# Expand the archive in it's own container (Thank's to Shane STANLEY)
	do shell script ("ditto -xk " & quotedPOSIXZip & space & quotedPOSIXarchiveContainer)
	set pathToApplicationSupport to path to application support from user domain as text
	# Build the path of the expanded folder
	set thisFolder to (text 1 thru -5 of (theZip as text)) as alias
	tell application "Finder"
		set successFlag to 0
		set folderName to name of thisFolder
		set theTargetFolder to (pathToApplicationSupport & "Lotus Notes Data:")
		set theCourseFolder to (pathToApplicationSupport & "Lotus Notes Data:" & folderName)
		
		if not (exists folder theTargetFolder) then
			set theTargetFolder to (pathToApplicationSupport & "IBM Notes Data:")
			set theCourseFolder to (pathToApplicationSupport & "IBM Notes Data:" & folderName)
		end if
		
		set filesToMove to (every file of thisFolder whose name extension is "nsf")
		
		if not (exists folder theCourseFolder) then
			make new folder at theTargetFolder with properties {name:folderName}
		end if
		
		try
			move filesToMove to theCourseFolder
		on error
			display dialog "File(s) already exist. Do you wish to overwrite?" buttons {"Yes", "No"}
			if the button returned of the result is "Yes" then
				move filesToMove to theCourseFolder with replacing
			else
				set successFlag to 1
			end if
			
		end try
		
		if successFlag = 0 then
			display dialog "File(s) moved successfully." buttons {"OK"}
		else
			display dialog "File(s) not moved." buttons {"OK"}
		end if
	end tell
end germaine

Here is an alternate version. I wrote it because, as I have no practice of networks I’m not sure that the ditto instruction would behave correctly.
With this version, the archive is expanded in the temporary folder which is on the local machine so I know that the process works.

(*
Save this script as an application.
Drag and drop a zip archive on it.
It will expand the archive then move the enclosed nsf files to their required location.

KOENIG Yvan (VALLAURIS, France)
2016/01/12
*)

on run
	# Entry point used if you double click the application's icon
	my germaine(choose file with prompt "Choose a zip archive" of type "zip")
end run

on open sel
	# Entry point use if you drop a zip file on the application's icon
	set maybe to sel's item 1
	tell application "Finder"
		if name extension of maybe is not "zip" then error "The dropped item must be a zip archive!"
	end tell
	my germaine(maybe)
end open


on germaine(theZip)
	tell application "Finder"
		set archiveName to name of theZip
	end tell
	
	set quotedPOSIXZip to quoted form of POSIX path of theZip
	# Set the path to the folder containing the dropped archive
	set path2Temp to path to temporary items as text # this path ends with a colon
	set quotedPOSIXarchiveContainer to quoted form of POSIX path of path2Temp
	# Expand the archive in the temporary items folder (Thank's to Shane STANLEY)
	do shell script ("ditto -xk " & quotedPOSIXZip & space & quotedPOSIXarchiveContainer)
	# Build the path of the expanded folder
	set folderName to text 1 thru -5 of archiveName # archive name deprieved of the name extension
	set thisFolder to (path2Temp & folderName) as alias

	set pathToApplicationSupport to path to application support from user domain as text # this path ends with a colon
	tell application "Finder"
		set successFlag to 0
		set theTargetFolder to (pathToApplicationSupport & "Lotus Notes Data:")
		set theCourseFolder to (pathToApplicationSupport & "Lotus Notes Data:" & folderName)
		
		if not (exists folder theTargetFolder) then
			set theTargetFolder to (pathToApplicationSupport & "IBM Notes Data:")
			set theCourseFolder to (pathToApplicationSupport & "IBM Notes Data:" & folderName)
		end if
		
		set filesToMove to (every file of thisFolder whose name extension is "nsf")
		
		if not (exists folder theCourseFolder) then
			make new folder at theTargetFolder with properties {name:folderName}
		end if
		
		try
			move filesToMove to theCourseFolder
		on error
			display dialog "File(s) already exist. Do you wish to overwrite?" buttons {"Yes", "No"}
			if the button returned of the result is "Yes" then
				move filesToMove to theCourseFolder with replacing
			else
				set successFlag to 1
			end if
			
		end try
		
		if successFlag = 0 then
			display dialog "File(s) moved successfully." buttons {"OK"}
		else
			display dialog "File(s) not moved." buttons {"OK"}
		end if
	end tell
end germaine

Yvan KOENIG running Sierra 10.12.2 in French (VALLAURIS, France) jeudi 12 janvier 2017 15:20:06