Chuyển tiêu đề Google Doc

Créé le : 8 janvier 2025

Répondu en utilisant OpenAI 01 par OpenAI01

Question

Viết cho tôi một Java Script trên Google Sheet đọc danh sách URL Google Doc trong cột A của trang tính "URL", vào từng Doc sau đó chuyển toàn bộ thẻ tiêu đề: h2, h3, h4 (không bao gồm tiêu đề h1)về dạng viết thường (viết hoa chữ cái đầu câu) ngoại trừ từ "CF68" nếu có vẫn giữ nguyên viết hoa. Nội dung trong doc là tiếng Việt.

Réflexion

Transforming document headings

I’m working on a Google Apps Script to read Google Doc URLs from Google Sheets, convert headings h2, h3, and h4 to lowercase while keeping 'CF68' uppercase, and place the modified text back in the sheet.

Transforming headings

I’m detailing the process of altering heading text to lowercase, except for 'CF68', which remains uppercase. For instance, "Hôm nay trời đẹp" becomes "Hôm nay trời đẹp Cf68".

Laying out steps

I'm transforming text to lowercase, replacing 'cf68' with 'CF68', and capitalizing the first letter of each heading. This approach ensures clarity and maintains 'cf68' uppercase.

Refining details

I'm detailing the Google Apps Script to open each Google Doc, check for headings h2, h3, and h4, and transform their text to lowercase with 'cf68' in uppercase.

Finalizing the script

I’m crafting a detailed Google Apps Script, ensuring it meets the user's specifications for transforming and updating Google Docs from Google Sheets, considering the request for explicit functionality and potential custom menus.

Transforming headings

I’m detailing a script to open Google Docs from Google Sheets, check headings h2, h3, and h4, and convert them to a "viết thường, chữ đầu câu, trừ 'CF68' keep uppercase" format.

Addressing ambiguities

I’m considering the impact if headings are multiple sentences or series of 'cf68'. The goal is to transform each heading to lowercase while keeping 'CF68' uppercase.

Thought about Google Sheets script for URLs cho 25 giây

Réponse

Dưới đây là ví dụ mã Google Apps Script (JavaScript chạy trên Google Sheets) để thực hiện yêu cầu:

  • Đọc danh sách URL Google Doc trong cột A của sheet tên "URL".
  • Mở từng Doc tương ứng.
  • Chuyển toàn bộ tiêu đề h2, h3, h4 sang dạng “viết thường và chỉ viết hoa chữ cái đầu” (theo kiểu một câu), ngoại trừ từ "CF68" nếu có thì vẫn giữ nguyên dạng viết hoa.

Lưu ý: Để chạy được đoạn mã này, bạn mở Google Sheets, vào Extensions > Apps Script, dán mã vào, lưu lại, sau đó gọi hàm chuyenTieuDe() trong môi trường Apps Script.

/** * Hàm chính để duyệt qua cột A của sheet "URL", * mở từng Google Doc, và xử lý lại các tiêu đề H2, H3, H4. */ function chuyenTieuDe() { // Mở spreadsheet hiện tại var ss = SpreadsheetApp.getActiveSpreadsheet(); // Lấy sheet tên "URL" var sheet = ss.getSheetByName("URL"); // Xác định số dòng cuối cùng có dữ liệu var lastRow = sheet.getLastRow(); // Giả định rằng danh sách URL bắt đầu từ hàng 2 (hàng 1 là tiêu đề cột) for (var row = 2; row <= lastRow; row++) { // Lấy URL từ cột A var docUrl = sheet.getRange(row, 1).getValue(); // Bỏ qua nếu ô trống if (!docUrl) continue; // Mở Doc theo URL var doc = DocumentApp.openByUrl(docUrl); var body = doc.getBody(); var numChildren = body.getNumChildren(); // Duyệt qua tất cả các phần tử trong body for (var i = 0; i < numChildren; i++) { var child = body.getChild(i); // Kiểm tra nếu phần tử là 1 đoạn (Paragraph) if (child.getType() === DocumentApp.ElementType.PARAGRAPH) { var paragraph = child.asParagraph(); // Lấy kiểu heading var heading = paragraph.getHeading(); // Chỉ xử lý nếu là heading 2, 3 hoặc 4 if ( heading === DocumentApp.ParagraphHeading.HEADING2 || heading === DocumentApp.ParagraphHeading.HEADING3 || heading === DocumentApp.ParagraphHeading.HEADING4 ) { // Lấy nội dung text của heading var originalText = paragraph.getText(); // Chuyển đổi theo quy tắc yêu cầu var convertedText = chuyenTieuDeH234(originalText); // Cập nhật lại đoạn text paragraph.setText(convertedText); } } } // Lưu và đóng Doc doc.saveAndClose(); } } /** * Hàm chuyển nội dung tiêu đề h2, h3, h4 sang dạng: * - Tất cả chữ thường * - Chữ cái đầu (của cả heading) được viết hoa * - Từ "CF68" nếu xuất hiện thì giữ nguyên viết hoa */ function chuyenTieuDeH234(text) { // Tránh lỗi nếu text rỗng if (!text) return ""; // Đưa toàn bộ về chữ thường var lowerText = text.toLowerCase(); // Giữ nguyên "CF68" nếu có // (tức là mọi chuỗi "cf68" trong văn bản sẽ được chuyển thành "CF68") lowerText = lowerText.replace(/cf68/g, "CF68"); // Viết hoa chữ cái đầu của toàn bộ heading // (coi heading là 1 câu duy nhất) if (lowerText.length > 0) { lowerText = lowerText.charAt(0).toUpperCase() + lowerText.slice(1); } return lowerText; }

Hướng dẫn thêm

  1. Thêm Script vào Google Sheets

    • Mở file Google Sheets có sheet “URL”.
    • Chọn Extensions > Apps Script (Tiện ích mở rộng > Trình chỉnh sửa Apps Script).
    • Dán toàn bộ đoạn mã vào, lưu lại.
  2. Chạy hàm

    • Chọn hàm chuyenTieuDe từ menu thả xuống trong trình chỉnh sửa Apps Script.
    • Bấm nút “Run” (Chạy).
    • Lần đầu chạy, Apps Script sẽ yêu cầu cấp quyền truy cập. Hãy chấp nhận để script có quyền chỉnh sửa Google Docs của bạn.
  3. Kiểm tra kết quả

    • Mở từng Doc trong danh sách URL để xác nhận các tiêu đề H2, H3, H4 đã được chuyển đổi đúng quy tắc (viết thường, chữ cái đầu viết hoa, riêng “CF68” giữ nguyên).

Chúc bạn thành công!

Question

Viết cho tôi một Java Script trên Google Sheet đọc danh sách URL Google Doc trong cột A của trang tính "URL", vào từng Doc sau đó in đậm toàn bộ thẻ H2, H1. Viết hoa chữ cái đầu các từ trong tiêu đề H1.

Réflexion

Transforming Google Docs

I’m crafting a script for Google Sheets, which reads URLs in column A of the "URL" sheet. Each Google Doc is edited to bold all H2 and H1 headings, and the first letter of each word in H1 headings is capitalized.

Confirming the function

I’m specifying a function for the script: it reads doc URLs, bolds H1 and H2 headings, and capitalizes the first letter of each word for H1 headings while keeping other letters lowercase.

Refining the function

I’m thinking through a function to capitalize the first letter of each word. It’s achieved by splitting the string, capitalizing the first character of each word, and rejoining them.

Thought about Google Sheets script for headlines cho 30 giây

Réponse

Dưới đây là một ví dụ mã Google Apps Script (JavaScript chạy trên Google Sheets) đáp ứng yêu cầu:

  • Đọc danh sách URL Google Doc trong cột A của sheet tên "URL".
  • Mở từng Doc tương ứng.
  • In đậm (bold) toàn bộ thẻ H1 và H2.
  • Riêng tiêu đề H1 thì viết hoa chữ cái đầu mỗi từ.

Lưu ý: Để chạy được đoạn mã này, bạn mở Google Sheets, vào Extensions > Apps Script, dán mã vào, lưu lại, sau đó gọi hàm inDamH1H2() trong môi trường Apps Script.

/** * Hàm chính để duyệt qua cột A của sheet "URL", * mở từng Google Doc, và xử lý tiêu đề H1, H2: * - In đậm tiêu đề H1, H2 * - H1 thì viết hoa chữ cái đầu mỗi từ */ function inDamH1H2() { // Mở spreadsheet hiện tại var ss = SpreadsheetApp.getActiveSpreadsheet(); // Lấy sheet tên "URL" var sheet = ss.getSheetByName("URL"); // Xác định số dòng cuối cùng có dữ liệu var lastRow = sheet.getLastRow(); // Giả định danh sách URL bắt đầu từ hàng 2 (hàng 1 là tiêu đề cột) for (var row = 2; row <= lastRow; row++) { // Lấy URL từ cột A var docUrl = sheet.getRange(row, 1).getValue(); // Bỏ qua nếu ô trống if (!docUrl) continue; // Mở Doc theo URL var doc = DocumentApp.openByUrl(docUrl); var body = doc.getBody(); var numChildren = body.getNumChildren(); // Duyệt qua tất cả các phần tử trong body for (var i = 0; i < numChildren; i++) { var child = body.getChild(i); // Kiểm tra nếu phần tử là Paragraph if (child.getType() === DocumentApp.ElementType.PARAGRAPH) { var paragraph = child.asParagraph(); // Lấy kiểu heading var heading = paragraph.getHeading(); // Nếu là H1 hoặc H2 thì in đậm if ( heading === DocumentApp.ParagraphHeading.HEADING1 || heading === DocumentApp.ParagraphHeading.HEADING2 ) { // Lấy đối tượng Text để chỉnh sửa var textRange = paragraph.editAsText(); // H1: Viết hoa chữ cái đầu mỗi từ + in đậm if (heading === DocumentApp.ParagraphHeading.HEADING1) { var originalText = textRange.getText(); var newText = capitalizeFirstLetterOfEachWord(originalText); textRange.setText(newText); textRange.setBold(true); } // H2: chỉ in đậm, giữ nguyên nội dung else if (heading === DocumentApp.ParagraphHeading.HEADING2) { textRange.setBold(true); } } } } // Lưu và đóng Doc doc.saveAndClose(); } } /** * Hàm viết hoa chữ cái đầu mỗi từ trong 1 chuỗi. * VD: "chào bạn" => "Chào Bạn" */ function capitalizeFirstLetterOfEachWord(str) { if (!str) return ""; // Tách các từ, viết hoa ký tự đầu mỗi từ return str .split(" ") .map(function(word) { if (word.length > 0) { return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); } return word; }) .join(" "); }

Hướng dẫn triển khai

  1. Thêm Script vào Google Sheets

    • Mở file Google Sheets có sheet “URL”.
    • Chọn Extensions > Apps Script.
    • Dán toàn bộ đoạn mã trên vào, lưu lại.
  2. Chạy hàm

    • Chọn hàm inDamH1H2 từ menu thả xuống trong trình chỉnh sửa Apps Script.
    • Bấm nút “Run” (Chạy).
    • Lần đầu chạy, Apps Script sẽ yêu cầu cấp quyền truy cập. Hãy chấp nhận để script có quyền chỉnh sửa Google Docs của bạn.
  3. Kiểm tra kết quả

    • Mở từng Doc trong danh sách URL để xác nhận:
      • Toàn bộ tiêu đề H1 và H2 đã được in đậm.
      • Các tiêu đề H1 đã được viết hoa chữ cái đầu mỗi từ.

Chúc bạn thành công!

Partager cette Q&R