首页 > 解决方案 > 热门修复“无法将 {button 返回:“Connect”,文本返回:“test”} 转换为 Unicode 文本类型。”

问题描述

我正在尝试创建一个小型自动化应用程序,以通过可能隐藏网络的ssh设备上的终端连接到无线网络。

一系列选项导致选择简单地输入SSID并连接设备。

set userSSID to display dialog "Type the SSID for the network you require below" buttons ["Connect", "Cancel"] default answer "" default button 1

            if button returned of result = "Cancel" then
                error number -128

            else

                if button returned of result = "Connect" then

                    tell application "Terminal"
                        set currentTab to do script ("networksetup -setairportpower en1 on")
                        delay 2
                        do script ("networksetup -setairportnetwork en1 '" & userSSID & "'") in currentTab
                    end tell
                end if

我希望它按照输入的方式连接到 SSID,在本例中为“测试”,但是我收到了错误消息:

“运行 AppleScript”操作遇到错误:“无法将 {button returned:"Connect", text returned:"test"} 转换为 Unicode 文本类型。”</p>

标签: terminalapplescriptautomator

解决方案


display dialog返回一条记录{button returned, text returned}作为错误状态。

要使用text returned你必须写的值

do script ("networksetup -setairportnetwork en1 '" & text returned of userSSID & "'") in currentTab

但是,您的代码中有一些冗余,例如按下Cancel按钮会立即中止脚本。

代码可以简化为

set {text returned:userSSID} to display dialog "Type the SSID for the network you require below" buttons ["Connect", "Cancel"] default answer "" default button 1
tell application "Terminal"
    set currentTab to do script ("networksetup -setairportpower en1 on")
    delay 2
    do script ("networksetup -setairportnetwork en1 '" & userSSID & "'") in currentTab
end tell

或者甚至没有Terminal.app

set {text returned:userSSID} to display dialog "Type the SSID for the network you require below" buttons ["Connect", "Cancel"] default answer "" default button 1
do shell script "networksetup -setairportpower en1 on"
delay 2
do shell script "networksetup -setairportnetwork en1 " & quoted form of userSSID

推荐阅读