AppleScript读取Excel值替换Pages占位符失效如何解决
代码存在的两个核心问题
- 第一,
return name1语句会在拿到Excel单元格值后直接终止整个脚本,后续操作Pages的代码完全不会执行,直接删掉这行即可。 - 第二,Pages部分的代码逻辑有两处错误:
- 用
untitled引用文档是无效的,只有未保存的新建文档才会用「无标题」做名称,而且多语言环境下名称会变,应该用front document指代当前前台打开的Pages文档。 - 直接匹配
word的逻辑非常容易失效:Pages会把带下划线的字符串按下划线拆分成多个word,根本匹配不到完整的name_placeholder字符串,应该直接对文档正文的文本内容做全局替换。
- 用
修复后的可运行代码
tell application "Microsoft Excel" set name1 to string value of cell "B7" of active sheet end tell tell application "Pages" tell front document set body text to (replace_chars of me given input_string:body text, search_string:"name_placeholder", replace_string:name1) end tell end tell -- 通用字符串替换子程序 on replace_chars given input_string:input_string, search_string:search_string, replace_string:replace_string set AppleScript's text item delimiters to search_string set text_items to text items of input_string set AppleScript's text item delimiters to replace_string return text_items as string end replace_chars
补充说明
- 代码里加了通用的字符串替换子程序,不管占位符有没有特殊字符、是不是被Pages拆分成多个word,都能正常匹配替换
- 如果你需要指定Pages文档而不是前台打开的文档,把
front document改成document "你的Pages文档名.pages"即可 - 不需要调用
activate也能正常读取Excel单元格值,不需要额外唤起Excel窗口
内容的提问来源于stack exchange,提问作者Corum
相关产品推荐
相关产品推荐

