Восстановите выравнивание на основе моего сценария ниже.Javascript

Форум по Javascript
Ответить
Anonymous
 Восстановите выравнивание на основе моего сценария ниже.

Сообщение Anonymous »

В настоящее время я работаю над сценарием, который буду запускать в Google App Script.
У меня есть приведенный ниже сценарий, который работает нормально. Единственная проблема, с которой я столкнулся, заключается в том, что выравнивание в левой ячейке должно быть по центру (текст LeftToRight), а правая ячейка также должна быть по центру, но к ней следует применять текст RightToLeft, поскольку он написан на арабском языке. Надеюсь, кто-нибудь поможет и исправит мой код.
Снимок экрана ниже: при запуске приведенного ниже сценария он запустит мой шаблон документа Google. Мне нужна ваша помощь только для исправления моего сценария, приведенного ниже.
до того, как появится результат
Изображение

шаблон результата
Изображение

function addHeaderAboveDeliveryNote(docId) {
if (!docId) {
docId = "My_Doc_ID";
}

const doc = DocumentApp.openById(docId);
const body = doc.getBody();

// Logo
const logoFileId = "1tRa5Xs0udRoy0h3irvpenLtpdNcpDeWy";
const imageBlob = DriveApp.getFileById(logoFileId).getBlob();

const englishText = `Refrigeration House Contracting Co.
Tel.: +966-12-6652276 / 6634619 Ext. - 31 / 32 Fax : 6612265
Email: jeddahsales@refhouse.com
P.O.Box: 9186 Jeddah 21413 Saudi Arabia
C.R.: 4030060389 - VAT: 310124036800003`;

const arabicText = `شركة البيت للتبريد التعاقد
هاتف: +۹٦٦-۱۲-٦٦٥۲۲۷٦ / ٦٦۳٤٦۱۹ تحويلة. - ۳۱ / ۳۲ فاكس : ٦٦۱۲۲٦٥
البريد الإلكتروني: jeddahsales@refhouse.com
ص.ب: ۹۱۸٦ جدة ۲۱٤۱۳ المملكة العربية السعودية
سجل تجاري: ٤۰۳۰۰٦۰۳۸۹ - ضريبة القيمة المضافة: ۳۱۰۱۲٤۰۳٦۸۰۰۰۰۳`;

// Convert inches to points (1 inch = 72 points)
const leftWidth = 3.5 * 72; // 252 pts
const centerWidth = 1.375 * 72; // 99 pts
const rightWidth = 3.5 * 72; // 252 pts

const paragraphs = body.getParagraphs();

for (let i = 0; i < paragraphs.length; i++) {
const para = paragraphs;
const text = para.getText().trim();

if (text.match(/^Delivery Note/i)) {
const parent = para.getParent();
const childIndex = parent.getChildIndex(para);

// Create table (NO SPACE ABOVE)
const table = parent.insertTable(childIndex, [["", "", ""]]);
table.setBorderWidth(0);

// Set exact column widths
table.getRow(0).getCell(0).setWidth(leftWidth); // English
table.getRow(0).getCell(1).setWidth(centerWidth); // Logo
table.getRow(0).getCell(2).setWidth(rightWidth); // Arabic

// === LEFT CELL: English text ===
const leftCell = table.getCell(0, 0);
leftCell.clear();

const leftPara = leftCell.appendParagraph(englishText);
leftPara.setAlignment(DocumentApp.HorizontalAlignment.CENTER)
.setFontSize(10);

// Bold the first line only
const firstLineLength = englishText.split("\n")[0].length;
leftPara.editAsText().setBold(0, firstLineLength - 1, true);

// === CENTER CELL: Logo ===
const middleCell = table.getCell(0, 1);
middleCell.clear();

const imgPara = middleCell.appendParagraph("");
const img = imgPara.appendInlineImage(imageBlob);

img.setWidth(120);
img.setHeight(120);

imgPara.setAlignment(DocumentApp.HorizontalAlignment.CENTER);
middleCell.setVerticalAlignment(DocumentApp.VerticalAlignment.CENTER);

// === RIGHT CELL: Arabic text (RTL + centered) ===
const rightCell = table.getCell(0, 2);
rightCell.clear();

const rightPara = rightCell.appendParagraph(arabicText);
rightPara.setFontSize(10)
.setAlignment(DocumentApp.HorizontalAlignment.CENTER)

break;
}
}

doc.saveAndClose();

// PDF generation
const pdf = DriveApp.getFileById(docId).getAs('application/pdf');
const pdfFile = DriveApp.createFile(pdf);
pdfFile.setName('DeliveryNote_withHeader.pdf');

Logger.log('PDF created: ' + pdfFile.getUrl());
return pdfFile.getUrl();
}

// Webhook entry
function doPost(e) {
const data = JSON.parse(e.postData.contents);
const docId = data.docId;
const pdfUrl = addHeaderAboveDeliveryNote(docId);
return ContentService.createTextOutput(JSON.stringify({ pdfUrl: pdfUrl }))
.setMimeType(ContentService.MimeType.JSON);
}



Подробнее здесь: https://stackoverflow.com/questions/798 ... ript-below
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»