Answered
InDesign Bulk Number to Arabic Text Script
- November 20, 2024
- 1 reply
- 292 views
Hello
I have numbers in a coulum and I want a script to write the numbers to Arabic TEXT
I asked claude ai to write a script but it doesn't work
Any help to edit the script and make it work?
demo document in the attachments!
Thanks in advanced!
// تحويل الأرقام إلى كلمات باللغة العربية
var ones = ['', 'واحد', 'اثنتان', 'ثلاث', 'أربع', 'خمس', 'ست', 'سبع', 'ثمان', 'تسع', 'عشر',
'إحدى عشر', 'اثنات عشرة', 'ثلاث عشرة', 'أربع عشرة', 'خمس عشرة', 'ست عشرة', 'سبع عشرة', 'ثمان عشرة', 'تسع عشرة'];
var tens = ['', '', 'عشرون', 'ثلاثون', 'أربعون', 'خمسون', 'ستون', 'سبعون', 'ثمانون', 'تسعون'];
var hundreds = ['', 'مائة', 'مئتان', 'ثلاثمائة', 'أربعمائة', 'خمسمائة', 'ستمائة', 'سبعمائة', 'ثمانمائة', 'تسعمائة'];
function numberToWords(num) {
if (num === 0) return 'صفر';
if (num === 1000) return 'ألف';
var words = '';
// معالجة المئات
if (num >= 100) {
var hundredsDigit = Math.floor(num / 100);
words = hundreds[hundredsDigit];
num = num % 100;
if (num > 0) {
words += ' و';
}
}
// معالجة العشرات والآحاد
if (num > 0) {
// للأرقام من 1-19
if (num < 20) {
words += ones[num];
}
// للأرقام من 20-99
else {
var remainder = num % 10;
var tensIndex = Math.floor(num / 10);
if (remainder === 0) {
words += tens[tensIndex];
} else {
words += ones[remainder] + ' و' + tens[tensIndex];
}
}
}
return words;
}
// الكود الرئيسي للتنفيذ في InDesign
try {
if (app.documents.length > 0) {
var doc = app.activeDocument;
var selection = doc.selection;
// التأكد من تحديد خلايا في الجدول
if (selection.length > 0 && selection[0] instanceof Cell) {
var firstCell = selection[0];
var table = firstCell.parent;
var selectedColumn = firstCell.columnIndex;
var targetColumn = selectedColumn + 1;
// التحقق من أن العمود المستهدف موجود في الجدول
if (targetColumn < table.columns.length) {
// معالجة كل صف في العمود المحدد
for (var i = 0; i < selection.length; i++) {
var currentCell = selection[i];
var cellContent = currentCell.contents;
var number = parseInt(cellContent);
// التحقق من أن المحتوى رقم صحيح
if (!isNaN(number) && number >= 0 && number <= 1000) {
// الحصول على الخلية المجاورة في نفس الصف
var targetCell = table.cells[currentCell.rowIndex][targetColumn];
// تحويل الرقم إلى كلمات وكتابته في الخلية المجاورة
targetCell.contents = numberToWords(number);
}
}
alert("تم تحويل الأرقام بنجاح!");
} else {
alert("لا يوجد عمود مجاور للكتابة فيه");
}
} else {
alert("الرجاء تحديد الخلايا التي تحتوي على الأرقام في الجدول");
}
}
} catch (e) {
alert("حدث خطأ: " + e);
}
