Количество вкладок собирает данные из текста с разделителями.JSX Adobe InDesign
Мне нужно знать, как читать данные из текстового файла с разделителями-вкладками, чтобы экспортировать объединенные документы в правильное местоположение.
- всегда будет 4-ая вкладка, каталог 2-й строки (номер группы) будет называться номером группы
- есть каталоги, уже созданные примитивным скриптом.vbs
данные должны быть размещены:
app.open(File(dirPath + "Card~" + (group number) + ".indd"));
а также:
fileName = (group number) + " " + myPageName + " " + date + ".pdf";
myFilePath = dirPath + docType + "/" + fileName;
myFile = new File(myFilePath);
myDocument.exportFile(ExportFormat.pdfType, myFile, false);
В предыдущем скрипте.vbs работа с этим файлом данных была написана так:
Call TwoDimensionArrayTest
Sub TwoDimensionArrayTest
Dim fso
Dim oFile
Dim arrline
Dim arrItem
Dim i
Dim arrMain()
Dim sFileLocation, strResults
Dim filesys, folder, path
Const forReading = 1
strFolder = "P:\RxCut\In Design Implementation\build\Co-Brand\"
mkdir = "P:\RxCut\In Design Implementation\"
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each objFile In objFSO.GetFolder(strFolder).Files
If Right(LCase(objFile.Name), 4) = LCase(".txt") Then
' The file contains on each line:
' Text1 (tab) Text2 (tab) Text3 (tab) Text4
' Text5 (tab) Text6 (tab) Text7 (tab) Text8
'etc etc
Set fso = CreateObject("Scripting.FileSystemObject")
sFileLocation = objFile.Name
Set oFile = fso.OpenTextFile(objFile.Name, forReading, False)
Do While oFile.AtEndOfStream <> True
strResults = oFile.ReadAll
Loop
' Close the file
oFile.Close
' Release the object from memory
Set oFile = Nothing
' Return the contents of the file if not Empty
If Trim(strResults) <> "" Then
' Create an Array of the Text File
arrline = Split(strResults, vbNewLine)
End If
For i = 0 To UBound(arrline)
If arrline(i) = "" Then
' checks for a blank line at the end of stream
Exit For
End If
ReDim Preserve arrMain(i)
arrMain(i) = Split(arrline(i), vbTab)
Next
path = arrMain(1)(3)
dir = mkdir & path
set filesys=CreateObject("Scripting.FileSystemObject")
If Not filesys.FolderExists(dir) Then
Set folder = filesys.CreateFolder(dir)
End If
dir = mkdir & path
Set folder = filesys.CreateFolder(dir & "\Web")
Set folder = filesys.CreateFolder(dir & "\Web\Web Cards")
Set folder = filesys.CreateFolder(dir & "\Web\Web Headers")
fso.MoveFile sFileLocation, arrMain(1)(3) & ".txt"
End If
Next
End Sub ' TwoDimensionArrayTest
Как я могу добиться чего-то подобного в.jsx? Заранее спасибо Джо
1 ответ
Решение
Понял, что это будет читать 1,3 и создать переменную для группы номер 1,3
var aFile = File("P:/RxCut/In Design Implementation/build/automate/automate.txt");
var fileData = readTabDelimitedFile ( aFile ) ;
//$.writeln(fileData[1][3]); //should contain first tab on second line
tstdata = fileData[1][3];
var group = tsdata
function readTabDelimitedFile ( fPath ) {
var returnArray = new Array ( ) ;
//-- Verify that the file exists
var fileObject = File ( fPath ) ;
if ( ! fileObject.exists ) {
return returnArray ; // an empty array because the file doesn't exist.
}
//-- Create a regular expression for a tab.
var tabExpression = new RegExp ( '\\t' ) ;
//-- Read the file.
try {
//-- The file has to be open.
fileObject.open ('r') ; //-- Open for reading.
while ( ! fileObject.eof ) {
var currentLine = fileObject.readln () ;
if ( tabExpression.test( currentLine ) ) {
returnArray.push(currentLine.split ('\t')) ;
}
}
fileObject.close() ;
}
catch (errMain) {
try {
fileObject.close() ;
}
//-- if the close generates an error skip it.
catch (errInner ) { /* nothing here */ }
}
return returnArray ;
var group = returnArray
}