让我先说明我知道我可以使用Filemaker的计算Apple脚本轻松完成以下操作。我真的很想知道如何在Apple Script中完成这个任务。我正在尝试将变量设置为名为Keyboard Maestro的宏程序,我将其称为KM。
我的脚本首先遍历Filemaker中找到的记录,并从每个找到的记录中复制数据。我无法弄清楚如何从Apple Script中的循环设置KM变量,因为据我所知,您无法动态设置Apple Script变量的名称。
我可以通过创建一个列表来创建变量的名称(我想使用它):
set variableListFunderName to {}
set i to 1
repeat until i = winCount + 1
copy "Business_ExistingAdvance" & i & "FunderName" to the end of variableListFunderName
set i to i + 1
end repeat
set variableListFundingCurrentBalance to {}
set i to 1
repeat until i = winCount + 1
copy "Business_ExistingAdvance" & i & "FundingCurrentBalance" to the end of variableListFundingCurrentBalance
set i to i + 1
end repeat
set variableListFundingAmount to {}
set i to 1
repeat until i = winCount + 1
copy "Business_ExistingAdvance" & i & "FundingAmount" to the end of variableListFundingAmount
set i to i + 1
end repeat
但是当我将字段的内容设置为我创建的列表项时,变量不会显示在KM中:
-
set i to 1
repeat until i = winCount + 1
tell record i
set item i of variableListFunderName to cell "Funders_ExistingAdvances::FunderCompanyName"
set item i of variableListFundingCurrentBalance to cell "FundingCurrentBalance"
set item i of variableListFundingAmount to cell "FundingAmount"
end tell
ignoring application responses
tell application "Keyboard Maestro Engine"
setvariable item i of variableListFunderName & "_AS" to item i of variableListFunderName
setvariable item i of variableListFundingCurrentBalance & "_AS" to item i of variableListFundingCurrentBalance
setvariable item i of variableListFundingAmount & "_AS" to (item i of variableListFundingAmount)
end tell
end ignoring
set i to i + 1
end repeat
如何设置这些KM变量?
答案 0 :(得分:1)
您不能使用applescript创建动态变量。
您目前所做的是生成字符串并将其添加到列表中。然后用其他值替换这些字符串,这样字符串就会丢失。
但你可以在applescript objective-c:
的帮助下实现这一目标use framework foundation
set variableListFunderName to {}
set i to 1
repeat until i = winCount + 1
copy "Business_ExistingAdvance" & i & "FunderName" to the end of variableListFunderName
set i to i + 1
end repeat
set funderNameDict to current application's NSMutableDictionary's alloc()'s init()
repeat with var in variableListFunderName
funderNameDict's setObject:"yourValue" forKey:var
end repeat
然后您可以使用
访问动态值set myValue to funderNameDict's objectForKey:"yourDynamicVarName"
循环使用字典
repeat with theKey in funderNameDict's allKeys()
set myValue to funderNameDict's objectForKey:theKey
end repeat