تقنية

كيفية التنسيق التلقائي لردود نماذج Google في جداول بيانات Google


عند إرسال نموذج Google، فإنه يخزن نسخة من استجابة النموذج كصف جديد في ورقة Google. المشكلة الوحيدة هنا هي أن نماذج Google لن تضيف أي تنسيقات أو أنماط إلى الصف الجديد التي ربما قمت بتطبيقها على الصفوف السابقة من الورقة. اسمحوا لي أن أوضح هذا بمثال صغير.

إليك ورقة Google التي تخزن استجابات نموذج Google. لقد قمت بتغيير عائلة الخطوط الافتراضية إلى Droid Sans، بمحاذاة عمود البلد والعمر إلى المنتصف، كما تم تطبيق تنسيق تاريخ مختلف على Date of Birth عمود.

يبدو كل شيء على ما يرام، ولكن بمجرد تقديم نموذج جديد، سيفقد الصف الجديد المُلحق بورقة Google عبر نماذج Google كل التنسيق.

لا يتم الحفاظ على محاذاة الخلية، ويتم تجاهل تنسيقات التاريخ المخصصة وكذلك حجم الخط الافتراضي وعائلة الخطوط. إليك لقطة شاشة لنفس الورقة ولكن مع إضافة صف جديد من خلال نماذج Google.

التنسيق التلقائي لنماذج جوجل

راجع أيضًا: أتمتة نماذج Google من خلال سير العمل

التنسيق التلقائي للصفوف الجديدة في جداول بيانات Google

نظرًا لعدم وجود طريقة لنا لتجاوز سلوك نماذج Google هذا، يمكننا الاستعانة بمساعدة Google Apps Script لتنسيق الصفوف الجديدة تلقائيًا في جداول بيانات Google التي تتم إضافتها من خلال نماذج Google.

الفكرة بسيطة. سنقوم بإنشاء onFormSubmit مشغل داخل ورقة Google والذي سيتم تنفيذه عند إرسال نموذج جديد. سيأخذ هذا المشغل أي تنسيق تم تطبيقه على الصف السابق وسيطبق على الصف الحالي.

للبدء، افتح ورقة Google وقم بتنسيق الصف الأخير بالأنماط التي ترغب في تطبيقها على استجابات النماذج الواردة.

بعد ذلك، انتقل إلى قائمة الإضافات > Apps Script وانسخ والصق Google Script أدناه. تشغيل createTrigger وأنت على ما يرام!

/**
 * @OnlyCurrentDoc
 */

const createTrigger = () => {
  ScriptApp.getProjectTriggers().forEach((trigger) => {
    ScriptApp.deleteTrigger(trigger);
  });
  ScriptApp.newTrigger('formRowOnFormSubmit').forSpreadsheet(SpreadsheetApp.getActive()).onFormSubmit().create();
};

const formRowOnFormSubmit = (e) => {
  if (!e) {
    throw new Error('Please do not run this function manually!');
  }
  const { range } = e;
  const row = range.getRowIndex();
  if (row > 2) {
    const sheet = range.getSheet();
    // Select the previous row range
    const sourceRange = sheet.getRange(`${row - 1}:${row - 1}`);
    // Get the recently added row
    const targetRange = sheet.getRange(`${row}:${row}`);
    // Copy the format only from the previous row to the current row
    sourceRange.copyTo(targetRange, SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);
  }
};

التنسيق الشرطي في جداول بيانات Google

تعرف على المزيد حول التنسيق الشرطي في جداول بيانات Google والذي يسمح لك بتطبيق التنسيق التلقائي على الخلايا في جداول البيانات التي تستوفي معايير معينة.



Source link

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى