Applescript를 사용하여 Bento 데이터베이스에서 필드 값을 가져 오는 데 문제가 있습니다.
다음 코드를 사용하여 항목을 가져 오지만 항목과 관련된 셀 또는 필드를 얻을 수 없습니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?
tell application "Bento"
repeat with i from 1 to count of libraries
set theName to name of library i
log theName
if theName is equal to "Reconnaissance site report" then
log "The library has been found"
set theLibraryProperties to properties of library i
log theLibraryProperties
tell library i
repeat with j from 1 to count of entries
set theEntryName to id of entry j
set theEntryProperties to properties of entry j
log theEntryName
log theEntryProperties
end repeat
end tell
end if
end repeat
end tell
답변
Bento의 스크립팅 사전은 매우 얇습니다. 필드 , 항목 및 셀이 모두 Bento 3 스크립팅 사전에있는 것처럼 보이기 때문에 이들이 모두 함께 사용되었거나 나중에 사용하기 위해 추가되었는지는 말하기가 어렵습니다.
AppleScript를 디버깅하는 데 능숙하지 않으므로 게시 한 코드에서 오류를 볼 수 없습니다.
필드 와 셀에 대해 _source_items_를 반복 해 보셨습니까 ? 사전은 데이터가 거기에 있으며 컬렉션 에서 쉽게 액세스 할 수 없음을 나타냅니다 . 스크립팅 브릿지를 쿼리하는 대화식 도구가 없기 때문에 많은 로깅이 필요할 수 있습니다.
스크립팅은 Bento와 동일한 기능을 갖춘 더 많은 기능을 갖춘 Filemaker 제품을 차별화하는 기능입니다.
sqlite3을 사용하여 데이터베이스를 읽었 ~/Library/Application\ Support/Bento/bento.bentodb/Contents/Resources/Database
습니까?
스키마와 테이블은 모두 원하는 SQL 도구에 열려 있습니다. AppleScript를 선호한다면 명령을 작성하는 것이 중요합니다 (명령 행 스크립팅보다 선호하는 것이 많이 있습니다).
답변
자전거에는 좋은 조언이 있지만 희망적으로 유용한 정보를 추가하겠습니다.
선택한 라이브러리 / 컬렉션, 라이브러리의 각 필드는 라이브러리의 ‘fields’속성에 저장해야합니다.
항목을 반복 할 때 각 항목에는 각 셀의 이름이 필드 콜렉션의 필드 이름과 일치하는 셀 콜렉션이 포함됩니다.
myValue를 j 항목의 셀 “필드 이름”으로 설정
죄송합니다. iPad에서 작성하여 실제 코드 atm을 게시 할 수 없습니다.