回答編集履歴
7
質問の変更にあわせて回答を修正しました。
test
CHANGED
@@ -1,22 +1,26 @@
|
|
1
|
-
参照の文字にリンクを貼るということがよくわかりませんが、
|
2
|
-
リンクを取得したいのであれば、
|
3
1
|
|
4
2
|
```js
|
5
|
-
const u
|
3
|
+
const value = sheet.getRange(...).getValue();
|
4
|
+
const values = sheet.getRange(...).getValues();
|
6
5
|
```
|
7
6
|
のようにデータを取得してしまうとセルに表示されている値のみが取得されますので、
|
8
|
-
リンクを取得
|
7
|
+
リンクをを含んだままの状態のセルの値(リッチテキスト値)を取得するには、
|
9
8
|
```js
|
10
|
-
const
|
9
|
+
const richValue = sheet.getRange(...).getRichTextValue();
|
10
|
+
const richValues = sheet.getRange(...).getRichTextValues();
|
11
11
|
```
|
12
|
-
|
12
|
+
のように記述します。
|
13
|
+
また、取得したリッチテキスト値をシートに記入するときは、
|
14
|
+
```js
|
15
|
+
sheet.getRange(...).setRichTextValue(richValue);
|
16
|
+
sheet.getRange(...).setRichTextValues(richValues);
|
17
|
+
```
|
18
|
+
のように記述します。
|
13
19
|
|
14
|
-
コメント欄での説明では希望の動作がよくわかりませんでしたので、
|
15
|
-
|
20
|
+
例えば、
|
16
21
|
シート1のI列にリンク付きのデータが保存されていて、
|
17
|
-
その列のデータをシート2のI列に転記する場合は、
|
22
|
+
その列のデータをリンク付のデータはリンク付きのままシート2のI列に転記する場合は、
|
18
|
-
リンク付のデータはリンク付きのまま転記したいということであれば、
|
19
|
-
次のスクリプト
|
23
|
+
次のスクリプトのようになります。
|
20
24
|
|
21
25
|
```js
|
22
26
|
function myFunction() {
|
@@ -38,3 +42,9 @@
|
|
38
42
|
.setRichTextValues(richValues);
|
39
43
|
}
|
40
44
|
```
|
45
|
+
|
46
|
+
お示しのコードでも、
|
47
|
+
I 列のデータの取得と記入のところで
|
48
|
+
取得(valueAdd4)のところで、**_.getValues()_** を **_.getRichTextValues()_** に変更し、
|
49
|
+
記入(add4)のところで、**_.setValues()_** を **_.setRichTextValues()_** に変更することで動作するようになると思います。
|
50
|
+
|
6
説明の字句修正
test
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
const url = sheet.getRange(...).getValue();
|
6
6
|
```
|
7
7
|
のようにデータを取得してしまうとセルに表示されている値のみが取得されますので、
|
8
|
-
リンク
|
8
|
+
リンクを取得したいときは、
|
9
9
|
```js
|
10
10
|
const url = sheet.getRange(...).getRichTextValue().getLinkUrl();
|
11
11
|
```
|
5
コードを単純なものに修正しました。
test
CHANGED
@@ -4,33 +4,22 @@
|
|
4
4
|
```js
|
5
5
|
const url = sheet.getRange(...).getValue();
|
6
6
|
```
|
7
|
-
のようにデータを取得
|
7
|
+
のようにデータを取得してしまうとセルに表示されている値のみが取得されますので、
|
8
8
|
リンク付きのデータとして取得したいときは、
|
9
9
|
```js
|
10
10
|
const url = sheet.getRange(...).getRichTextValue().getLinkUrl();
|
11
11
|
```
|
12
12
|
としてみてください。
|
13
13
|
|
14
|
-
仮に、リンク付きの「参照」という値を他のセルに挿入したいということであれば、
|
15
|
-
```js
|
16
|
-
const value = sheet.getRange(...).getValue();
|
17
|
-
const url = sheet.getRange(...).getRichTextValue().getLinkUrl();
|
18
|
-
const richText = SpreadsheetApp.newRichTextValue()
|
19
|
-
.setText(value)
|
20
|
-
.setLinkUrl(url);
|
21
|
-
sheet.getRange(...).setRichTextValue(richText.build());
|
22
|
-
```
|
23
|
-
のようにします。
|
24
|
-
|
25
|
-
|
14
|
+
コメント欄での説明では希望の動作がよくわかりませんでしたので、
|
26
15
|
仮定での回答になりますが、
|
27
16
|
シート1のI列にリンク付きのデータが保存されていて、
|
28
|
-
その列のデータをシート2のI列に転記する
|
17
|
+
その列のデータをシート2のI列に転記する場合は、
|
29
18
|
リンク付のデータはリンク付きのまま転記したいということであれば、
|
30
19
|
次のスクリプトが参考になるかもしれません。
|
31
20
|
|
32
21
|
```js
|
33
|
-
function myFunction
|
22
|
+
function myFunction() {
|
34
23
|
// 初期設定
|
35
24
|
const ss = SpreadsheetApp.getActiveSpreadsheet()
|
36
25
|
const sheet1 = ss.getSheetByName('シート1');
|
@@ -42,16 +31,10 @@
|
|
42
31
|
const urlCol2 = 9; // シート2の記入先の列(例えばI列)
|
43
32
|
|
44
33
|
// 特定の列のリンク付の値を他のシートの指定の列に記入
|
34
|
+
const richValues = sheet1
|
45
|
-
|
35
|
+
.getRange(startRow1, urlCol1, lastRow1 - startRow1 + 1, 1)
|
46
|
-
const urlValues = urlRange.getValues().flat();
|
47
|
-
const urlRichValues = urlRange.getRichTextValues().flat();
|
48
|
-
const urls = urlRichValues.map(v => v && v.getLinkUrl());
|
49
|
-
const richTexts = urls.map((v, i) => [SpreadsheetApp
|
50
|
-
.
|
36
|
+
.getRichTextValues();
|
51
|
-
.setText(urlValues[i])
|
52
|
-
.setLinkUrl(v)
|
53
|
-
.build()]);
|
54
|
-
sheet2.getRange(startRow2, urlCol2, rich
|
37
|
+
sheet2.getRange(startRow2, urlCol2, richValues.length, richValues[0].length)
|
55
|
-
.setRichTextValues(rich
|
38
|
+
.setRichTextValues(richValues);
|
56
39
|
}
|
57
40
|
```
|
4
字句の修正
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
```
|
23
23
|
のようにします。
|
24
24
|
|
25
|
-
また、コメント欄での説明では希望の動作がよくわかりませんでした
|
25
|
+
また、コメント欄での説明では希望の動作がよくわかりませんでしたので、
|
26
26
|
仮定での回答になりますが、
|
27
27
|
シート1のI列にリンク付きのデータが保存されていて、
|
28
28
|
その列のデータをシート2のI列に転記すると仮定した場合、
|
3
スクリプトの例を追加
test
CHANGED
@@ -4,7 +4,8 @@
|
|
4
4
|
```js
|
5
5
|
const url = sheet.getRange(...).getValue();
|
6
6
|
```
|
7
|
-
のようにデータを取得するとセルに表示されている値が取得されます
|
7
|
+
のようにデータを取得するとセルに表示されている値が取得されますので、
|
8
|
+
リンク付きのデータとして取得したいときは、
|
8
9
|
```js
|
9
10
|
const url = sheet.getRange(...).getRichTextValue().getLinkUrl();
|
10
11
|
```
|
@@ -20,3 +21,37 @@
|
|
20
21
|
sheet.getRange(...).setRichTextValue(richText.build());
|
21
22
|
```
|
22
23
|
のようにします。
|
24
|
+
|
25
|
+
また、コメント欄での説明では希望の動作がよくわかりませんでしたが、
|
26
|
+
仮定での回答になりますが、
|
27
|
+
シート1のI列にリンク付きのデータが保存されていて、
|
28
|
+
その列のデータをシート2のI列に転記すると仮定した場合、
|
29
|
+
リンク付のデータはリンク付きのまま転記したいということであれば、
|
30
|
+
次のスクリプトが参考になるかもしれません。
|
31
|
+
|
32
|
+
```js
|
33
|
+
function myFunction2() {
|
34
|
+
// 初期設定
|
35
|
+
const ss = SpreadsheetApp.getActiveSpreadsheet()
|
36
|
+
const sheet1 = ss.getSheetByName('シート1');
|
37
|
+
const sheet2 = ss.getSheetByName('シート2');
|
38
|
+
const lastRow1 = sheet1.getLastRow(); // シート1の最終行
|
39
|
+
const startRow1 = 2;// シート1の開始行
|
40
|
+
const startRow2 = 2;// シート2の開始行
|
41
|
+
const urlCol1 = 9; // シート1のリンク付きの列(I列)
|
42
|
+
const urlCol2 = 9; // シート2の記入先の列(例えばI列)
|
43
|
+
|
44
|
+
// 特定の列のリンク付の値を他のシートの指定の列に記入
|
45
|
+
const urlRange = sheet1.getRange(startRow1, urlCol1, lastRow1 - startRow1 + 1, 1);
|
46
|
+
const urlValues = urlRange.getValues().flat();
|
47
|
+
const urlRichValues = urlRange.getRichTextValues().flat();
|
48
|
+
const urls = urlRichValues.map(v => v && v.getLinkUrl());
|
49
|
+
const richTexts = urls.map((v, i) => [SpreadsheetApp
|
50
|
+
.newRichTextValue()
|
51
|
+
.setText(urlValues[i])
|
52
|
+
.setLinkUrl(v)
|
53
|
+
.build()]);
|
54
|
+
sheet2.getRange(startRow2, urlCol2, richTexts.length, richTexts[0].length)
|
55
|
+
.setRichTextValues(richTexts);
|
56
|
+
}
|
57
|
+
```
|
2
貼り付けの例を追記
test
CHANGED
@@ -10,3 +10,13 @@
|
|
10
10
|
```
|
11
11
|
としてみてください。
|
12
12
|
|
13
|
+
仮に、リンク付きの「参照」という値を他のセルに挿入したいということであれば、
|
14
|
+
```js
|
15
|
+
const value = sheet.getRange(...).getValue();
|
16
|
+
const url = sheet.getRange(...).getRichTextValue().getLinkUrl();
|
17
|
+
const richText = SpreadsheetApp.newRichTextValue()
|
18
|
+
.setText(value)
|
19
|
+
.setLinkUrl(url);
|
20
|
+
sheet.getRange(...).setRichTextValue(richText.build());
|
21
|
+
```
|
22
|
+
のようにします。
|
1
説明文を追加
test
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
参照の文字にリンクを貼るということがよくわかりませんが、
|
2
|
+
リンクを取得したいのであれば、
|
3
|
+
|
1
4
|
```js
|
2
5
|
const url = sheet.getRange(...).getValue();
|
3
6
|
```
|