6

我是一个相当出色的applescripter,并且已经编写脚本很长时间了。我当前创建的应用程序涉及使用“数据库事件”应用程序。我正在尝试使用子例程设置字段的值。显然,我“无法继续 set_duration”,而且我不知道可能出了什么问题。当前的源代码如下。

property first_run : true
on run
if first_run then
display dialog "THIS APPLICATION IS DESIGNED TO CLEAN UP THE FOLDER CONTAINING IT." & return & return & "After a certain number of days that you set, every item in that folder that has not been used for that duration will automatically be moved to a folder named \"Unused Items\"." with icon 1 buttons {"Cancel", "OK"} default button 2
set first_run to false
end if
tell application "Database Events"
set quit delay to 0
try
get database "Folder Cleanup Wizard"
on error
make new database with properties {name:"Folder Cleanup Wizard"}
tell database "Folder Cleanup Wizard"
make new record with properties {name:"Duration"}
tell record "Duration" to make new field with properties {name:"Days", value:set_duration()} --> UNKNOWN ERROR
end tell
end try
end tell
end run

on set_duration()
try
set duration to the text returned of (display dialog "Enter the minimum duration period (in days) that files and folders can remain inactive before they are moved to the \"Unused Items\" folder." default answer "" with title "Set Duration") as integer
if the duration is less than 0 then
display alert "Invalid Duration" message "Error: The duration cannot be a negative number." buttons {"OK"} default button 1
set_duration()
end if
on error
display alert "Invalid Duration" message "Error: \"" & (duration as string) & "\" is not a valid duration time." buttons {"OK"} default button 1
set_duration()
end try
end set_duration
4

2 回答 2

10

问题是 AppleScript 被视为 from或 fromset_duration的术语,这要归功于这些块。(在一个块之外,只是简单的工作。)为了解决这个问题,您需要使用,它告诉 AppleScript 在当前脚本中查找该函数。所以,在这种情况下,你会有database "Folder Cleanup Wizard"application "Database Events"telltellset_duration()my set_duration()

...
tell record "Duration" to ¬
  make new field with properties {name:"Days", value:my set_duration()}
...
于 2011-01-24T02:48:53.603 回答
2

我认为这是因为 Applescript 对 set_duration 所在的位置感到困惑

做这样的事情

tell me to set value_to_set to set_duration()
tell record "Duration" to make new field with properties {name:"Days", value:value_to_set}

我认为这对你有用

于 2011-01-24T02:24:14.827 回答