2016-07-21 74 views
0

我正在ExtendScript中使用bridge來將標籤附加到excel文檔中的文檔。我使用js-xlsx庫解析excel文檔。我正在運行一個for循環來解析各個單元格並獲取值,當我從命令行運行它時,它完美地工作。但是,當我在ExtendScript中運行它時,我得到一個異常,即keys()。forEach不是函數。由於某種原因,ExtendScript讀取循環的方式不同嗎?我很難解決這個問題。這是給我麻煩的線路:For循環ExtendScript - 鍵()。for each不是函數

var range = {s:{c:0, r:0}, e:{c:1,r:30}}; 
for (var R = range.s.r; R <= range.e.r; ++R) { 
    for (var C = range.s.c; C <= range.e.c; ++C) { 
     var cell_address = xls.utils.encode_cell({c:C, r:R}); 

回答

2

作爲一種語言,Extendscript停留在ECMAScript 3--所以它本身不知道Object.keys()Array.forEach()。甚至沒有JSON

的這位官員提到可以在After Effects scripting guide pag.3,在那裏說發現:

After Effects的腳本使用Adobe ExtendScript語言,這是JavaScript的由幾個Adobe應用程序使用的 擴展形式, 包括Photoshop,Illustrator和InDesign。 ExtendScript 根據ECMA-262 規範實現JavaScript語言。 After Effects腳本引擎支持ECMA-262標準的第3版,包括標記和詞彙 約定,類型,對象,表達式和語句。 ExtendScript 還實現了E4X ECMA-357規範,該規範將訪問 定義爲XML格式的數據。

以上在PS腳本指南中找不到,也未參考。

如果你想使用ES5功能,要麼包括墊片,要麼給extendscriptr一試。 Extendscriptr是一個腳本編寫社區項目(無Adobe參與),它可讓您編寫ES5/ES6代碼,然後將其轉換爲ES3。

+1

已更新帖子。奇怪的是,關於ECMA合規性的信息並未被每個應用程序的官方腳本文檔所共享。 –

+0

在這種情況下包含的墊片文件:https://github.com/es-shims/es5-shim/blob/master/es5-shim.js –

1

我想通了。該錯誤在文件中進一步下降。 ExtendScript或我擁有的版本不支持forEach循環,所以我必須寫出forEach函數的文件並導入它。