You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AppleScript在Chrome中执行Google搜索失效问题求助

解决AppleScript在Chrome中执行Google搜索失效的问题

你的代码在Chrome中无法运行,主要是因为Chrome与Safari的AppleScript API存在差异,加上代码里的一些冗余设置和无效参数导致的,以下是具体修正方案:

问题根源

  1. Chrome的AppleScript接口不支持includeStandardAdditions属性,添加该属性会直接引发错误
  2. 直接引用chrome.windows[0].currentTab可能在Chrome未打开窗口时报错,且Chrome的标签对象属性名为activeTab而非currentTab
  3. 你拼接的URL包含大量Google搜索的临时冗余参数,这些参数是单次请求的专属标识,复用会导致跳转失效

修正方案1:修复JavaScript执行逻辑

function run(input, parameters) {
    var chrome = Application("Google Chrome");
    
    // 确保Chrome至少有一个窗口和激活标签
    if (chrome.windows.length === 0) {
        chrome.windows.create({url: "about:blank"});
    }
    var activeTab = chrome.windows[0].activeTab;
    
    // 正确编码搜索关键词,构造干净的搜索URL
    var searchQuery = input[0] + "+" + input[2] + "+" + input[5] + "+" + input[6];
    var encodedQuery = encodeURIComponent(searchQuery);
    var jsScript = `window.location = 'https://www.google.com/search?q=${encodedQuery}';`;
    
    chrome.doJavaScript(jsScript, { in: activeTab });
    
    return input;
}

修正方案2:更可靠的直接URL跳转(无需执行JS)

如果不需要通过JavaScript跳转,直接修改标签URL的方式更稳定:

function run(input, parameters) {
    var chrome = Application("Google Chrome");
    
    // 构造标准化的搜索URL
    var searchQuery = input[0] + "+" + input[2] + "+" + input[5] + "+" + input[6];
    var encodedQuery = encodeURIComponent(searchQuery);
    var searchUrl = `https://www.google.com/search?q=${encodedQuery}`;
    
    // 存在窗口则在当前标签打开,否则新建窗口
    if (chrome.windows.length > 0) {
        chrome.windows[0].activeTab.url = searchUrl;
    } else {
        chrome.windows.create({url: searchUrl});
    }
    
    return input;
}

关键改进点

  • 移除无效的includeStandardAdditions配置
  • 增加窗口/标签的存在性检查,避免空引用错误
  • 使用encodeURIComponent正确编码搜索关键词,防止特殊字符破坏URL结构
  • 去掉Google搜索的冗余参数,只保留核心的搜索关键词参数q,确保URL长期有效

内容的提问来源于stack exchange,提问作者funnysquid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:31:00