[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt String von Javascript > Applescript, Kodierung?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

String von Javascript> Applescript, Kodierung?

pixelstaub
Beiträge gesamt: 125

1. Nov 2015, 19:55
Beitrag # 1 von 1
Bewertung:
(676 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebe Scripting-Gurus,

kürzlich habe ich folgendes InDesign-Script entdeckt, das mit Hilfe von Applescript aus allen Tabellen des Dokumentes Excel generiert. Zu großen Teilen klappt das auch fantastisch – lediglich bei der Übergabe von tableData ans AppleScript scheinen einige Zeichen "komisch" kodiert zu werden.In Excel kommt beispielsweise das Viertelgeviert als <2009> an, was zwar dem eingeklammerten Unicodewert entspricht, aber dennoch wenig hilfreich ist …

Übergebe ich tableData als Parameter im doScript an das Applescript und speichere es in die Applescript-Variable mytableData, scheint bei "display dialog" in Excel auch alles gut anzukommen (aktuell unten aaskommentiert).
Lediglich das Einbinden von mytableData (das selbst Teile des Scripts enthält) ins Script will dann nicht mehr.

Jemand eine Idee?

Code
var newExcelDoc = ['tell application "Microsoft Excel"',   
'set theWorkbook to make new workbook',
'end tell\r'].join("\r");
app.doScript (newExcelDoc, ScriptLanguage.APPLESCRIPT_LANGUAGE);
var doc = app.properties.activeDocument && app.activeDocument;
myTables = getTable(doc);
n = myTables && myTables.length;

while (n--) exportTable (myTables[n].tables[0]);




function exportTable (myTable) {
var doc = app.properties.activeDocument && app.activeDocument,
myTable = myTable || getTable (doc);
var sheetName = myTable.cells[0].contents;
if (!myTable) {alert ("Take a break"); exit();};
var numberOfRows = myTable.rows.length,
rowNumber, columnNumber,
rowContents = [],
setRange, openMark, closeMark;

if ($.os.match(/Mac/i))
{
setRange = 'set value of range "A';
openMark = '" to {';
closeMark = '}';
}
else
{
setRange = 'app.Range("A';
openMark = '") = Array(';
closeMark = ')';
}
for (var z = 0, rowNumber = 0; rowNumber < numberOfRows; rowNumber++) {
var numberOfColumns = myTable.rows[rowNumber].columns.length,
toRange = GetExcelColumnName (numberOfColumns - 1),
columnContents = [];
for (columnNumber = 0; columnNumber < numberOfColumns; columnNumber++) {
var cellContents = myTable.rows[rowNumber].cells.everyItem().contents;
columnContents = '"' + cellContents.join('", "') + '"';
}
rowContents[rowNumber] = setRange + ++z + ":" + toRange+ z + openMark + columnContents + closeMark;
}

tableData = rowContents.join("\r");

if ($.os.match(/Mac/i))
{
var myParameters = [tableData];
myAppleScript = [
'tell application "Microsoft Excel"',
'tell active workbook',
'make new worksheet with properties {name:"' + sheetName +'"} at end',
// 'set mytableData to item 1 of arguments',
//funktioniert im dialog
// 'display dialog mytableData',
'tell active sheet',
tableData,
'end tell',
'end tell',
'end tell\r'].join("\r");
app.doScript (myAppleScript, ScriptLanguage.APPLESCRIPT_LANGUAGE, myParameters);
} }



function GetExcelColumnName (columnNumber) {// 0 is A 25 is Z 26 is AA etc.
var dividend = columnNumber + 1,
columnName = "",
modulo;

while (dividend > 0) {
modulo = (dividend - 1) % 26;
columnName = String.fromCharCode (65 + modulo) + columnName;
dividend = Math.floor((dividend - modulo) / 26);
}
return columnName;
}


function getTable (doc) {
if (!doc) return false;
app.findTextPreferences = null;
app.findTextPreferences.findWhat = "\x16";
var tables = doc.findText(true);
if (tables.length) return tables;
};


Danke und Grüße
Stephan
X

Aktuell

InDesign / Illustrator
ScreenShot 274 Warum Templates in InDesign benutzen_ - Satzkiste in Stuttgart - Satz und technische Umsetzung - Google Chrome (300x300 HilfDirSelbst)

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/