使用Photoshop脚本-扩展脚本工具中的Console.log

48
我第一次尝试写Photoshop脚本,希望能有一个类似console.log的函数来输出Javascript控制台中的数组和对象值于ExtendScript Toolkit App,请问是否有相应的功能?
4个回答

71

这在使用 Photoshop CS6 的 xtools 扩展时无法工作。 - justingordon
在Adobe Extend Script 4上没有输出任何内容! - numediaweb
刚在ExtendScript CS6中尝试了一下,效果非常好。 - David van Driessche
3
尽管这个输出到控制台,但是在这里或者链接中都没有提供这个控制台的信息(我在vsc控制台中也没有看到它),这使得这篇文章对某些人来说没有帮助。此外,链接中提供的文档是2010年的,因此不可靠。我认为现在是时候给这个问题一个更更新的答案了。 - John Miller
这在 ExtendScript 4.2.12 中完美运行。对于那些不知道的人,控制台是 extendscript 工具中的一个窗口。这正是 OP 所问的。 - Joe Johnston

4
我正在使用ExtendScript Toolkit 4.0版本,并且使用_print('foo')似乎可以解决问题。

2

将日志记录到文件中

我知道这是老旧的东西,但最近我需要为 InDesign 脚本的某些值进行日志记录,因此我想分享我的“解决方案”。

我的第一个问题是,我甚至都不知道 $.writeln() 所输出的内容去了哪里。所以我使用了一个简单的函数来将日志记录到文档目录中的文件中。也许对某人有用。我猜这可能适用于 Photoshop 或其他 ExtendScript 环境。

我了解到 ExtendScript 不支持 JSON 方法,因此我使用了一个 polyfill。简单地将文件(在我的情况下是 json2.js)放置在与您的 .jsx 相同的目录中即可。

#include "json2.js"; // include polyfill file

function log (input) {
    if(!debug) return;
    if(!JSON || !JSON.stringify) return;

    var now = new Date();
    var output = JSON.stringify(input);

    $.writeln(now.toTimeString() + ": " + output);

    var logFile = File(app.activeDocument.filePath + "/log.txt");
    logFile.open("a");
    logFile.writeln(now.toTimeString() + ": " + output);
    logFile.close();
}

使用方法

var debug = true;

log("abc 123");
log([1, 3, 4343, "ddddd", null, false]);

使用debug变量可以快速启用或禁用输出。


1
write("any message");

XTools是适用于Photoshop的工具集。我发现在Mac OSX上,CS6版本的Photoshop调试器经常崩溃。

你可以在这里了解更多关于XTools的信息:http://ps-scripts.sourceforge.net/xtools.html

它很棒!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接