AppleScript:创建日期对象时出错-1728

时间:2014-09-26 20:18:18

标签: date applescript

我正在尝试从一批图像中获取图像日期,并将该图像日期粘贴到另一批具有相同文件名(但文件类型不同)的图像上

我找到了一个帮助我的AppleScript:http://brettgrossphotography.com/2008/12/10/aperture-applescript-export-restore-metadata

但是,日期部分很棘手。

在导出部分中,我正常解析日期,但导入部分不起作用。

        if (curTagShort is "ImageDate") then
            log "-- try to set the date --"
            -- set curDate to (curVal as date)
             set curDate to rich text of (item ctr of theList)
             log (curVal as string)
             adjust image date (date curVal as string) of images {curImg}
        else

以上代码生成以下日志:

(*-- try to set the date --*)
(*Freitag, 26. September 2014 20:21:21*)
get date "Freitag, 26. September 2014 20:21:21" of image version id "CeT8CoCwSYuhejftq9kmag"
    --> error number -1728 from date "Freitag, 26. September 2014 20:21:21" of image version id "CeT8CoCwSYuhejftq9kmag"
(*date "Freitag, 26. September 2014 20:21:21" of item 1 of {«class rkdp» id "CeT8CoCwSYuhejftq9kmag" of application "Aperture"} kann nicht in Typ string umgewandelt werden.*)

变量curVal是

set curVal to item ctr of theList

ctr是当前索引,列表是一个列表......很明显。

到目前为止非工作部分,如果我将>> curVal替换为字符串<<实际的字符串“Freitag,2014年9月26日20:21:21”它的工作原理。

由于我对applescript知之甚少,我认为问题在于“curVal”是列表的一部分,因此

"Freitag, 26. September 2014 20:21:21" of item 1 of {«class rkdp» id "CeT8CoCwSYuhejftq9kmag" of application "Aperture"}

那么我有什么诡计吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

不要将日期对象强制转换为字符串。日期对象有一个名为“日期字符串”的属性,您可以使用它。

而不是这样做:

date curVal as string

......这样做:

date string of date curVal

在AppleScript编辑器中单独试用此示例脚本以明确说明:

set theDate to the current date
set theDateString to the date string of theDate
set theTimeString to the time string of theDate
set theDateTimeString to theDateString & space & theTimeString
return theDateTimeString

在AppleScript编辑器窗口底部的“结果”窗格中,您将看到此脚本将当前日期和时间作为字符串返回,如下所示:

"Sunday, September 28, 2014 09:11:36"

ctr是当前索引,列表是一个列表......很明显。

如果你必须解释你的变量名,那么它们的命名很糟糕。我建议你将“ctr”重命名为“theCurrentIndex”,无论列出的是什么“theList”,都要指定。例如:“thePhotoList。”或者您可以为列表使用复数名称,例如“thePhotos”,因为这样您可以执行诸如“在照片中重复照片”等操作。