【问题标题】:"current record" doesn't work: applescripting Filemaker Pro 13 in a loop“当前记录”不起作用:循环使用 AppleScripting Filemaker Pro 13
【发布时间】:2015-03-09 22:06:41
【问题描述】:

我有一个 Pro 13 数据库,其中包含大约 120 条记录(用于会议)。我想与 BBEdit 合作为每个摘要创建单独的文件,因此 。令我惊讶的是(尽管有很多关于脚本的网络提示)“[tag:current record]”在脚本中没有被识别。

相关位是这样的:

FM Script:
Loop
Perform Applescript

tell application "FileMaker Pro"
activate
set MyFileName to cell "WebAbstractFileName" of table "SelectionProcess"
set MyWebAbstract to cell "WebAbstract" of table "SelectionProcess" as text
end tell

-- (BBEdit bit, which works fine in testing)

 Go to Next Record (exit after last)
End Loop

如果我只想检索第一条记录,这很好用!

这个applescript设置在一个循环遍历记录的filemaker脚本中,但脚本并不关心它在哪个记录中。

我尝试在表引用之前添加“当前记录”,但它给了我错误(例如,错误“FileMaker Pro 出现错误:找不到对象。”当前记录的单元格“WebAbstractFileName”中的编号 -1728表“SelectionProcess”)没有“当前记录”它工作正常,但只给我第一条记录。

【问题讨论】:

  • 您确实意识到您可以在 Filemaker 本身中完成此操作,方法是依次隔离每条记录(在新窗口中)并导出它?
  • +1 到 michael.hor257k 评论。不仅第一部分可以在 FIleMaker 中更轻松地完成,下面发布的第二部分也可以在 FIleMaker 中完成而无需 BBedit 参与。如果 ophiochos 比 FileMaker 更适应 AppleScript,我能看到的唯一优势
  • 我想知道 Filemaker 是否可以创建文件,但不确定如何确保正确的编码和后缀。具有讽刺意味的是,我们决定使用单个文件而不是我的多个文件,所以我会对 FM 如何做到这一点感兴趣,因为有一天我希望其他人使用数据库——任何提示都值得赞赏(导出记录似乎想要指向现有文件)。你们都正确指出的Applescript步骤在FM中更容易将变量传递给BBEdit......是的,Nicolai,你猜对了——我对Applescript有更多的经验;)

标签: filemaker applescript applescript record filemaker


【解决方案1】:

以下是(大致)如何在 Filemaker 脚本中执行此操作:

Go to Layout [ “YourTable” ] 
# FIND THE RECORDS OF INTEREST
Perform Find [ Restore ] 
Go to Record/Request/Page [ First ] 
Loop 
    New Window [  ] 
    # ISOLATE THE CURRENT RECORD
    Show All Records 
    Omit Record 
    Show Omitted Only 
    Set Variable [ $path; Value:Get ( DocumentsPath ) & "someFolder/"  & YourTable::Somefield  & ".html" ] 
    Export Records [ No dialog; “$path” ] 
    Close Window [ Current Window ] 
    Go to Record/Request/Page [ Next; Exit after last ] 
End Loop 

这会将搜索结果中的每条记录作为单个文件导出到位于用户文档文件夹中的文件夹“someFolder”中,并使用YourTable::Somefield 字段的内容作为文件名。

如果如您所说,您不需要单独的文件,那么这当然会简单得多。

【讨论】:

  • (拍了拍额头)我没想到FM中的变量!谢谢你。我敢肯定,如果我能够将其中的一些工作委派出去,那将会很有用;)(但我很高兴使用 BBEdit,因为我可以立即预览 html 输出并返回编辑)。
【解决方案2】:

更多的修补解决了这个问题。关键是改变语法。脚本现在显示:

tell application "FileMaker Pro"
activate

tell current record to set MyFileName to cell "WebAbstractFileName"
tell current record to set MyWebAbstract to cell "WebAbstract"


end tell

似乎发生的情况是字段必须可见(但我曾一度认为这不是问题......去图。如果它们可见,您可以删除表规范)。该脚本封装在 Loop 块中,将对搜索结果进行操作,并(如果有指示)在最后一条记录后退出。

我附加了 脚本来创建一个新文件,并将它与从另一个字段中获取的变量一起保存,以备不时之需。

tell application "BBEdit"
set notesPath to ":Users:ophiochos:Dropbox:TL Conference Admin:Webpage materials:Abstracts:"

set newFilePath to notesPath & MyFileName & ".html"

set newDoc to make new text document with properties {contents:MyWebAbstract}

tell newDoc
    set source language to "HTML"
    save to newFilePath
    close window
end tell
end tell

【讨论】:

    【解决方案3】:

    或者您可以简单地为每条记录创建一个包含所需导出文件内容的计算字段,逐个循环遍历记录,然后使用 Export Field Contents ['YourCalculatedField_c'] 脚本步骤。

    【讨论】:

    • 这种方法存在(至少)两个问题:首先,导出字段内容会创建一些应用程序无法处理的 UTF-16 编码文件。其次,它需要在计算字段中复制组装文件的逻辑——这是一种不必要且容易出错的复杂情况。我更希望将所有必要的逻辑保留在脚本中,而不是在架构中乱扔仅用于为第三方服务的附加字段。
    • 还不错;点头和眨眼一样好。我更喜欢对我的工作进行 QA 以避免我的代码中的错误,但不同的人会有不同的笔触。一个人的天花板就是另一个人的屋顶……多样性是生活的调味品,对吧?对鹅有益的东西对鹅有益。滚石不生苔。 54-40 或战斗!
    【解决方案4】:

    您还可以使用 FM 预览 html 输出,方法是使用 Web 查看器显示您的 html。这与单独导出一起,您无需外部程序即可获得所有这些功能。

    如果您需要更改输出文件的文本编码,您还可以在 xslt 中指定这些用于输出文件: http://filemakerhacks.com/2012/09/23/export-field-contents-as-utf-8/

    此外,如果从 FileMaker 中执行 applescript,则不需要“tell application”行,因为它是隐含的。

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2020-05-27
      • 2015-05-10
      相关资源
      最近更新 更多