текущая запись не работает: создание сценария приложений для Filemaker Pro 13 в цикле

У меня есть база данных filemaker Pro 13, содержащая около 120 записей (это для конференции). Я хочу объединить его с BBEdit, чтобы создавать отдельные файлы для каждой аннотации, таким образом applescript. К моему большому удивлению (и несмотря на множество веб-советов по написанию сценариев) '[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 получил ошибку: объект не найден.» Номер -1728 из ячейки «WebAbstractFileName» текущей записи таблицы «SelectionProcess» ") Без" текущей записи "он работает нормально, но дает мне только первую запись.


person ophiochos    schedule 09.03.2015    source источник
comment
Вы понимаете, что можете сделать это в самом Filemaker, по очереди изолировав каждую запись (в новом окне) и экспортируя ее?   -  person michael.hor257k    schedule 10.03.2015
comment
+1 к комментарию michael.hor257k. Не только первую часть можно было сделать проще в FIleMaker, но и вторую часть, размещенную ниже, можно было выполнить в FIleMaker без участия BBedit. Единственное преимущество, которое я вижу, если ophiochos более удобен с AppleScript, чем с FileMaker   -  person Nicolai Kant    schedule 10.03.2015
comment
Я задавался вопросом, может ли Filemaker создавать файлы, но не знал, как обеспечить правильную кодировку и суффикс. По иронии судьбы, мы решили использовать один файл, а не несколько моих, поэтому мне было бы интересно, как FM может это сделать, поскольку однажды я хочу, чтобы другие использовали базу данных - любые подсказки приветствуются (экспортная запись, похоже, хотела укажите на существующий файл). Шаг Applescript, на который вы оба правильно указываете, намного проще в FM, был необходим для передачи переменных в BBEdit ... И да, Николай, вы правильно угадали - у меня гораздо больше опыта работы с Applescript;)   -  person ophiochos    schedule 11.03.2015


Ответы (4)


Вот (примерно) как это можно сделать в скрипте 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, расположенную в папке Documents пользователя, используя содержимое поля YourTable::Somefield в качестве имени файла.

Если, как вы говорите, вам не нужны отдельные файлы, то, конечно, это может быть намного проще.

person michael.hor257k    schedule 13.03.2015
comment
(хлопает по лбу) Я не думал о переменных в FM! Спасибо. Я уверен, что это будет полезно, если мне когда-нибудь удастся делегировать часть этой работы;) (Но я счастлив использовать BBEdit, так как я могу сразу просмотреть вывод html и вернуться к редактированию). - person ophiochos; 14.03.2015

Это решило больше усилий. Решающим моментом было изменение синтаксиса. Теперь сценарий гласит:

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, будет работать с найденным набором и (если будет получено указание) выйдет после последней записи.

Я добавляю сценарий bbedit, чтобы создать новый файл и сохраните его с переменной, взятой из другого поля, если это интересно.

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
person ophiochos    schedule 09.03.2015

Или вы можете просто создать вычисляемое поле, которое содержит содержимое желаемого файла экспорта для каждой записи, перебирать записи одну за другой и просто использовать шаг сценария Экспорт поля ['YourCalculatedField_c']. .

person Raymond Uppier-Püpschrute    schedule 14.03.2015
comment
У этого подхода есть (как минимум) две проблемы: во-первых, при экспорте содержимого поля создается файл в кодировке UTF-16, который некоторые приложения не могут обрабатывать. Во-вторых, требуется воспроизвести логику сборки файла в поле вычислений, что является ненужным и подверженным ошибкам осложнением. Я бы предпочел сохранить всю необходимую логику в сценарии и не засорять схему дополнительными полями, которые используются только для обслуживания третьей стороны. - person michael.hor257k; 14.03.2015
comment
Справедливо; кивок ничем не хуже подмигивания. Я предпочитаю проверять качество своей работы, чтобы избежать ошибок в моем коде, но разные штрихи для разных людей. Потолок для одного человека - это крыша для другого ... разнообразие - это изюминка жизни, верно? Что хорошо для гуся, то хорошо и для гусака. Под лежачий камень вода не течет. 54-40 или бой! - person Raymond Uppier-Püpschrute; 16.03.2015

Вы также можете использовать FM для предварительного просмотра вывода html с помощью веб-средства просмотра для отображения вашего html. Благодаря этому, наряду с индивидуальным экспортом, вы можете получить всю эту функциональность без необходимости во внешней программе.

Если вам нужно изменить кодировку текста для выходных файлов, вы также можете указать их в xslt для вывода файлов: http://filemakerhacks.com/2012/09/23/export-field-contents-as-utf-8/

Кроме того, при выполнении applescript из FileMaker строка «сообщить приложению» не нужна, поскольку она подразумевается.

person SoliantMike    schedule 18.03.2015