สคริปต์เพื่อเปลี่ยนสีข้อความแต่ละรายการภายในเซลล์


10

ฉันมีสเปรดชีตของ Google ที่มีชื่อพนักงานนับร้อยสำหรับกำหนดเวลา แต่ละเซลล์มีหลายชื่อภายในเซลล์นั้นที่มีลักษณะดังนี้:

First Last
First Last
First Last

First Last
First Last

ชื่อหลายชื่อเป็นรหัสสีแดงในขณะที่ชื่ออื่นยังคงเป็นสีดำ ฉันกำลังใช้สคริปต์เพื่อลบบรรทัดใหม่พิเศษเพื่อย่อชื่อ (ส่วนใหญ่จะถูกลบออกโดยใช้การค้นหา / แทนที่สำหรับสิ่งต่าง ๆ เช่นวันหยุดส่งผลให้ขึ้นบรรทัดใหม่เปล่า):

First Last
First Last
First Last
First Last
First Last

ปัญหาคือว่าเมื่อสคริปต์นี้ทำงานชื่อสีแดงมีการเปลี่ยนแบบอักษรของพวกเขาเป็นสีดำ ฉันไม่สามารถหาวิธีเขียน a for loop เพื่อเปลี่ยนแต่ละบรรทัดภายในเซลล์กลับเป็นสีแดงได้ ฉันลงท้ายด้วยข้อความทั้งหมดในเซลล์เป็นสีแดงหรือรหัส HTML ที่ระบุว่าควรเป็นสีแดง

มีความคิดเห็นเกี่ยวกับวิธีการทำงานนี้หรือไม่?


2
การจัดรูปแบบบางส่วนของเนื้อหาเซลล์เป็นการเพิ่มล่าสุดไปยัง Google ชีตและไม่ได้รวมเข้ากับตรรกะสเปรดชีตที่เหลือ โดยเฉพาะอย่างยิ่งสูตรและสคริปต์จะไม่รับรู้ถึงการจัดรูปแบบดังกล่าวและไม่สามารถใช้งานได้ ผลลัพธ์ของพวกเขาไม่ได้ดำเนินการจัดรูปแบบใด ๆ กับมัน

คำตอบ:


2

ในเวลานี้มีคุณสมบัติของช่วงสองชนิดเท่านั้นที่จัดการเนื้อหา: ค่าและสูตร น่าเสียดายที่การเปลี่ยนแปลงเนื้อหาของเซลล์โดยใช้จะเป็นการลบรูปแบบที่ใช้กับส่วนต่างๆของเนื้อหา

ในกรณีเช่นนี้ผู้ใช้สามารถดูตัวติดตามปัญหาของ Google Apps Scriptเพื่อค้นหาคำขอคุณลักษณะและในกรณีที่ไม่มีผู้ส่ง หากคำขอคุณลักษณะมีอยู่แล้วสำหรับสถานที่ที่คุณกำลังค้นหาให้ติดดาวเป็นจำนวนคนที่ติดดาวคำขอคุณลักษณะนั้นโดยทีมงาน Google Apps Script จะพิจารณาจัดลำดับความสำคัญ

โปรดติดดาวคำขอคุณลักษณะต่อไปนี้

ปัญหาที่ 6000: จัดการบางส่วนของเนื้อหาเซลล์โดยทางโปรแกรม


2

ปรับปรุง: วิธีการที่กล่าวถึงในโพสต์นี้จะรวมอยู่ในบันทึกประจำรุ่น 22 มกราคม 2019

มีคนพบวิธีการที่ไม่มีเอกสารและตัวอย่างที่แชร์ซึ่งเกี่ยวข้องกับคำถามนี้

จากความคิดเห็นที่ 21การจับชิ้นส่วนของโทรศัพท์มือถือโปรแกรมกล่าวถึงในคำตอบของฉันก่อนหน้า

คุณยังสามารถรับรูปแบบปัจจุบันของเซลล์ที่ส่วนต่าง ๆ ของข้อความของเซลล์อยู่ในรูปแบบที่แตกต่างกัน:

  var richText = ss.getCurrentCell().getRichTextValue();
  var runs = richText.getRuns();
  for (var i=0; i<runs.length; i++)
  {
    // get the style of this section of text, between startIndex and endIndex
    var run = runs[i];
    var startIndex = run.getStartIndex();
    var endIndex = run.getEndIndex();
    var styleBold = run.getTextStyle().isBold();
  }

อาจมีการประกาศวิธีการใหม่ในสัปดาห์นี้เป็นครั้งแรกในGoogle Cloud 18 ถัดไปในซานฟรานซิสโกแล้วบน Google Developers Blog

ที่เกี่ยวข้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.