Saya punya tugas yang agak rumit untuk diselesaikan. Saya tidak menggunakan OS X, tetapi sekarang saya harus menyediakan beberapa aplikasi sederhana kepada rekan kerja yang secara otomatis menyalin file tertentu ke folder jaringan. Biasanya saya akan menggunakan skrip shell, tetapi beberapa GUI minimal adalah hal yang harus dimiliki dalam kasus ini. Jadi saya pikir saya bisa menggunakan AppleScript.
Saya harus melakukan langkah-langkah ini:
- Sambungkan ke drive jaringan (
smb://myserver/public
, di mana setiap pengguna memiliki nama dan kata sandi masuk yang berbeda, jadi menghubungkan nama pengguna dan kata sandi dalam kode bukanlah suatu pilihan). - Arahkan ke folder di drive jaringan (setiap pengguna memiliki folder berbeda di drive jaringan).
- Salin file tertentu dari desktop pengguna ke folder yang dibuka di drive jaringan.
Jadi ketika menjalankan skrip, pengguna harus memasukkan nama pengguna dan kata sandi untuk menghubungkan drive jaringan, dan pengguna harus memasukkan nama folder tempat mereka harus menyalin file. Bisakah nama folder disimpan secara permanen entah bagaimana? Jadi pengguna tidak perlu memasukkan nama folder setiap kali ia menjalankan skrip ini. Tetapi dari waktu ke waktu folder ini dapat berubah, jadi harus ada opsi untuk mengubah folder sebelum menyalin. Juga bagaimana saya dapat memeriksa apakah drive jaringan sudah terpasang, sehingga pengguna tidak akan ditanyai nama pengguna dan kata sandi setiap kali dia menjalankan skrip ini?
Berikut ini sejauh mana saya bisa menyusun skrip untuk menyelesaikan tugas ini:
Saya berjuang untuk memahami bagaimana AppleScript suka menyimpan jalur ke file / folder pada drive jaringan yang terpasang.
Jadi inilah yang saya miliki sekarang:
property userName : "myfolder"
property folderName : "myusername"
property serverName : "public"
property serverAddress : "smb://myserver/public"
property serverStatus : 0
on connectToServer()
global userName
global folderName
global serverName
global serverAddress
global serverStatus
set mountedDisks to list disks
if mountedDisks does not contain serverName then
mount volume serverAddress as user name userName with password (display dialog "Enter password for" & quoted form of serverName with title "" default answer "" giving up after 3 with hidden answer)
end if
set mountedDisks to list disks
if mountedDisks contains serverName then
set serverStatus to 1
else
connectToServer()
end if
end connectToServer
on mainLoop()
global userName
global folderName
global serverName
global serverAddress
global serverStatus
if serverStatus is equal to 0 then
connectToServer()
end if
set mainDialog to display dialog ¬
"Your username: " & userName & "
Your folder's name: " & folderName buttons {"Quit", "Settings", "Copy file"} with title "File Copier" default button 1
set mainDialogAnswer to button returned of mainDialog
if mainDialogAnswer is equal to "Quit" then
quit
end if
if mainDialogAnswer is equal to "Settings" then
display dialog "Enter your username" with title "Step 1 of 2" default answer userName
set userName to {text returned of result}
display dialog "Enter your folder's name" with title "Step 2 of 2" default answer folderName
set folderName to {text returned of result}
mainLoop()
end if
if mainDialogAnswer is equal to "Copy" then
-- copy the file
end if
end mainLoop
mainLoop()