セル内の個々のテキストの色を変更するスクリプト


10

スケジュール用に数百人の従業員名が記載されたGoogleスプレッドシートがあります。各セルには、そのセル内に次のような複数の名前があります。

First Last
First Last
First Last

First Last
First Last

名前の多くは赤で色分けされ、他の名前は黒のままです。私はスクリプトを使用して余分な改行を削除し、名前をこれに折りたたみます(それらの多くは、休日などの検索/置換を使用して削除され、空白の改行になります)。

First Last
First Last
First Last
First Last
First Last

問題は、このスクリプトを実行すると、赤の名前のフォントが黒に変わることです。セル内のこれらの個々の行を赤に戻すforループを作成する方法がわかりません。セル内のすべてのテキストが赤になるか、HTMLコードが赤であることを示すHTMLコードになります。

これをどのように機能させるかについてのアイデアはありますか?


2
セルコンテンツの部分的な書式設定は、Googleスプレッドシートに最近追加されたもので、他のスプレッドシートロジックと実際には統合されていません。特に、数式とスクリプトはそのようなフォーマットを認識しておらず、適用できません。それらの出力には、そのようなフォーマットは含まれていません。

回答:


2

現時点では、コンテンツを処理する範囲プロパティは2種類しかありません。値と数式です。残念ながら、それらを使用してセルのコンテンツを変更すると、コンテンツの一部に適用されているフォーマットが削除されます。

このような場合、ユーザーはGoogle Apps Script Issue Trackerを調べて、機能リクエストを検索することができます。また、送信リクエストがない場合も同様です。探している機能の機能リクエストがすでに存在する場合は、機能リクエストにスターを付けたユーザーの数がGoogle Appsスクリプトチームによって優先順位付けされると見なされるため、スターを付けます。

次の機能リクエストにスターを付けてください

問題6000:プログラムでセルコンテンツの一部を処理する


2

更新:この投稿で言及されているメソッドは、2019年1月22日のリリースノートに含まれています。

誰かがこの質問に関連する文書化されていない方法と共有の例を見つけました。

以下からのコメント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 Next 18 San Franciscoで発表され、次にGoogle Developers Blog で発表されるでしょう。

関連した

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.