85455


その後、太字箇所に背景色を付与したいです。  
さらに、単語ごとにカンマ区切りでログ出力（あるいはCSV出力）もしたいです。

[code]

     function getBold() {
      var body = DocumentApp.getActiveDocument().getBody();
    var asText = body.asText();
    var Text = asText.getText();
    
[/code]

のあと、Text.isBold()等で1文字ずつ書式を判定し、Text.setForegroundColor()等で着色するのだと思うんですが、、いまいちif文の作り方がわかりません。。


CC BY-SA 4.0
2022-01-03T00:45:05.767
85454
2022-01-03T01:31:52.160
50744
question
google-apps-script
GAS（Google Apps Script） Google docuumentです。文書全体から太字箇所全てを取得したいです。


Google
Documentのテキストから太文字の単語を取得し、その単語の背景色を変更するとともに単語をカンマ区切りで出力するとの理解です。この場合、次のようなサンプルスクリプトはいかがでしょうか。

### サンプルスクリプト

[code]

    function myFunction() {
      var backgroundcolor = "#ff0000"; // ここに背景色をセットしてください。
    
      var body = DocumentApp.getActiveDocument().getBody();
      var obj = body.editAsText();
      var { values } = [...obj.getText()].reduce((o, e, i) => {
        if (obj.isBold(i)) {
          if (o.start == 0) o.start = i;
          o.temp += e;
        } else if (o.temp != "") {
          obj.setBackgroundColor(o.start, o.start + o.temp.length - 1, backgroundcolor);
          o.values.push(o.temp);
          o.temp = "";
          o.start = 0;
        }
        return o;
      }, { values: [], temp: "", start: 0 });
      var res = values.join(",");
      console.log(res)
    }
    
[/code]

  * このスクリプトを実行すると、太文字の単語をピックアップし、背景色を変更し（サンプルでは赤色）、`単語ごとにカンマ区切りでログ出力もしたいです`とのリクエストに答えると思われます。
  * `太字箇所に背景色を付与したいです`の場合、`setForegroundColor`ではなく、`setBackgroundColor`を使用します。

### Note:

  * 残念ながら、`あるいはCSV出力`について、この場合、行と列をどのように想定されているのか理解できませんでした。
  * このスクリプトはV8 runtimeを有効の状態で使用してください。

### References:

  * [isBold(offset)](https://developers.google.com/apps-script/reference/document/text#isboldoffset)
  * [setBackgroundColor(startOffset, endOffsetInclusive, color)](https://developers.google.com/apps-script/reference/document/text#setbackgroundcolorstartoffset,-endoffsetinclusive,-color)


CC BY-SA 4.0
2022-01-03T01:31:52.160
85455
2022-01-03T01:31:52.160
19460
85454
answer