質問編集履歴

4

追加

2023/04/17 06:58

投稿

mbcztpw
mbcztpw

スコア30

test CHANGED
File without changes
test CHANGED
@@ -22,3 +22,43 @@
22
22
  <置換後>
23
23
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-04-13/217b2bae-a803-4247-8cd5-92cfc5459a63.jpeg)
24
24
  リンクが消える
25
+
26
+ 下記変更しましたが、今度は処理対象のすべてのセルが「RichTextValue」になりました。
27
+
28
+ ```GAS
29
+ function replace1() {
30
+ let ss = SpreadsheetApp.getActiveSpreadsheet();
31
+ let sheet = ss.getSheetByName("シート1")
32
+ let range = sheet.getRange(2,1,3,2).getRichTextValues();
33
+ for(let cnt=0; cnt<range.length; cnt++){
34
+ // range[cnt][0] = range[cnt][0].getText().replace(/データA/g,"Data1");
35
+ // range[cnt][1] = range[cnt][1].getText().replace(/データA/g,"Data1");
36
+
37
+ var text = range[cnt][0].getText().replace(/データA/g,"Data1");
38
+ var builder = SpreadsheetApp.newRichTextValue();
39
+ builder.setText(text);
40
+ range[cnt][0].getRuns().forEach(run => {
41
+ const startOffset = run.getStartIndex();
42
+ const endOffset = run.getEndIndex() ;
43
+ const style = run.getTextStyle();
44
+ builder.setTextStyle(startOffset, endOffset, style);
45
+ });
46
+ var newValue = builder.build();
47
+ range[cnt][0] = newValue;
48
+
49
+ text = range[cnt][1].getText().replace(/データA/g,"Data1");
50
+ builder = SpreadsheetApp.newRichTextValue();
51
+ builder.setText(text);
52
+ range[cnt][1].getRuns().forEach(run => {
53
+ const startOffset = run.getStartIndex();
54
+ const endOffset = run.getEndIndex() ;
55
+ const style = run.getTextStyle();
56
+ builder.setTextStyle(startOffset, endOffset, style);
57
+ });
58
+ newValue = builder.build();
59
+ range[cnt][1] = newValue;
60
+
61
+ }
62
+ sheet.getRange(2,1,3,2).setValues(range);
63
+ }
64
+ ```

3

修正

2023/04/13 06:48

投稿

mbcztpw
mbcztpw

スコア30

test CHANGED
@@ -1 +1 @@
1
- Googleスプレッドシート、GASでgetRichTextValues使う場合の文字列置換の方法
1
+ Googleスプレッドシート、GASでリッチテキスト置換する場合のGAS
test CHANGED
File without changes

2

画像追加

2023/04/13 03:28

投稿

mbcztpw
mbcztpw

スコア30

test CHANGED
File without changes
test CHANGED
@@ -18,3 +18,7 @@
18
18
  sheet.getRange(2,1,3,2).setValues(range);
19
19
  }
20
20
  ```
21
+
22
+ <置換後>
23
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-04-13/217b2bae-a803-4247-8cd5-92cfc5459a63.jpeg)
24
+ リンクが消える

1

修正

2023/04/13 03:26

投稿

mbcztpw
mbcztpw

スコア30

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,7 @@
1
1
  以下のように、セル内にURLリンクを含むセル内の文字列「データA」をGASで「Data1」に置換します。
2
2
  <置換前>
3
3
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-04-13/171c0550-ae87-478e-90a0-31236c55991e.jpeg)
4
- **ボールドテキスト**
4
+
5
5
  URLリンクを含んだ文字列の場合、getRichTextValuesを使うと情報を取得できると分かったのですが、
6
6
  以下プログラムを実行するとURLリンクが消えてしまいます。
7
7
  どのようにすればよいでしょうか。