質問編集履歴

7

修正

2024/01/30 04:21

投稿

maru
maru

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,77 +1,8 @@
1
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/e5e88bac-5e98-4a40-87a9-091b0c72c55a.png)
1
+
2
2
  シート1のI列にリンク付きのデータが保存されていて、
3
3
  その列のデータをシート2のI列に転記し、
4
4
  リンク付のデータはリンク付きのまま転記したい
5
5
 
6
-
7
- ### 発生している問題・分からないこと
8
- ハーパーリンクのリンクが外れてしまいます。
9
-
10
-
11
- ### 該当のソースコード
12
- ```ここに言語を入力
13
- //重複を削除してから挿入(データ追加版)
14
- function myFunction() {
15
- //初期設定
16
- const rowBegin = 2;//各シートともに開始行は2行目
17
- const colBegin1 = 1;//シート1はA列から抽出
18
- const colBegin2 = 4;//シート2はD列から挿入
19
- const colCount = 5;//抽出、挿入は5列分
20
- const colAdd1 = 6;//シート1の追加データはF列から
21
- const colAdd2 = 15;//シート2の追加データはN列へ
22
- const colAdd3 = 7;//シート1の追加データはG列から
23
- const colAdd4 = 16;//シート2の追加データはO列へ
24
- const colAdd5 = 8;//シート1の追加データはF列から
25
- const colAdd6 = 17;//シート2の追加データはO列へ
26
- const colAdd7 = 9;//シート1の追加データはO列へ
27
- const colAdd8 = 18;//シート2の追加データはO列へ
28
- const ss = SpreadsheetApp.getActiveSpreadsheet();
29
- const sheet1 = ss.getSheetByName('シート1');
30
- const sheet2 = ss.getSheetByName('シート2');
31
- //各シートのデータを取得
32
- const lastRow1 = sheet1.getLastRow();
33
- const lastRow2 = sheet2.getLastRow();
34
- const value1 = sheet1.getRange(rowBegin, colBegin1, lastRow1 - rowBegin + 1, colCount).getValues();
35
- const valueAdd1 = sheet1.getRange(rowBegin, colAdd1, lastRow1 - rowBegin + 1, 1).getValues();
36
- const valueAdd2 = sheet1.getRange(rowBegin, colAdd3, lastRow1 - rowBegin + 1, 1).getValues();
37
- const valueAdd3 = sheet1.getRange(rowBegin, colAdd5, lastRow1 - rowBegin + 1, 1).getValues();
38
- const valueAdd4 = sheet1.getRange(rowBegin, colAdd7, lastRow1 - rowBegin + 1, 1).getValues();
39
- const value2 = sheet2.getRange(rowBegin, colBegin2, lastRow2 - rowBegin + 1, colCount).getValues();
40
- //シート1のデータからシート2との重複を削除したデータと追加データを作成
41
- const united = [];
42
- const add1 = [];
43
- const add2 = [];
44
- const add3 = [];
45
- const add4 = [];
46
- //処理中のデータのインデックスを得るためfor(of)を forEachに変更
47
- value1.forEach((item1, i) => {
48
- let isSame = false;
49
- for (const item2 of value2) {
50
- if (item1.toString() == item2.toString()) {
51
- isSame = true;
52
- break;//一致したら直ちにisSameの真偽判定へ
53
- }
54
- }
55
- if (!isSame) {
56
- united.push(item1);
57
- add1.push(valueAdd1[i]);
58
- add2.push(valueAdd2[i]);
59
- add3.push(valueAdd3[i]);
60
- add4.push(valueAdd4[i]);//便乗して追加データの同じ行の値を配列に加える
61
- }
62
- });
63
- //シート2の最終行に挿入
64
- if (united.length > 0) {
65
- sheet2.getRange(lastRow2 + 1, colBegin2, united.length, united[0].length).setValues(united);
66
- sheet2.getRange(lastRow2 + 1, colAdd2, add1.length, add1[0].length).setValues(add1);
67
- sheet2.getRange(lastRow2 + 1, colAdd4, add2.length, add2[0].length).setValues(add2);
68
- sheet2.getRange(lastRow2 + 1, colAdd6, add3.length, add3[0].length).setValues(add3);
69
- sheet2.getRange(lastRow2 + 1, colAdd8, add4.length, add4[0].length).setValues(add4);
70
- }
71
- }
72
- ```
73
-
74
- ```
75
6
 
76
7
  ### 試したこと・調べたこと
77
8
  - [x] teratailやGoogle等で検索した

6

修正

2024/01/30 00:10

投稿

maru
maru

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ![![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/63371613-93a8-4a14-a094-5ecfb8de5425.png)](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/5a8053cd-5848-4f7f-ad82-5dc464cbb7ce.png)
1
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/e5e88bac-5e98-4a40-87a9-091b0c72c55a.png)
2
2
  シート1のI列にリンク付きのデータが保存されていて、
3
3
  その列のデータをシート2のI列に転記し、
4
4
  リンク付のデータはリンク付きのまま転記したい

5

修正

2024/01/30 00:05

投稿

maru
maru

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,4 @@
1
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/cf93c5d2-eb18-45aa-9e63-cfe6e7d61390.png)![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/3b308fd2-e150-4ace-90d4-f8e94806e11b.png)### 実現したいこと
2
-
1
+ ![![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/63371613-93a8-4a14-a094-5ecfb8de5425.png)](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/5a8053cd-5848-4f7f-ad82-5dc464cbb7ce.png)
3
2
  シート1のI列にリンク付きのデータが保存されていて、
4
3
  その列のデータをシート2のI列に転記し、
5
4
  リンク付のデータはリンク付きのまま転記したい

4

修正

2024/01/30 00:04

投稿

maru
maru

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/3b308fd2-e150-4ace-90d4-f8e94806e11b.png)### 実現したいこと
1
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/cf93c5d2-eb18-45aa-9e63-cfe6e7d61390.png)![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/3b308fd2-e150-4ace-90d4-f8e94806e11b.png)### 実現したいこと
2
2
 
3
3
  シート1のI列にリンク付きのデータが保存されていて、
4
4
  その列のデータをシート2のI列に転記し、

3

修正

2024/01/29 23:59

投稿

maru
maru

スコア10

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ### 実現したいこと
1
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/3b308fd2-e150-4ace-90d4-f8e94806e11b.png)### 実現したいこと
2
2
 
3
3
  シート1のI列にリンク付きのデータが保存されていて、
4
4
  その列のデータをシート2のI列に転記し、

2

間違え。

2024/01/29 16:19

投稿

maru
maru

スコア10

test CHANGED
File without changes
test CHANGED
@@ -27,8 +27,8 @@
27
27
  const colAdd7 = 9;//シート1の追加データはO列へ
28
28
  const colAdd8 = 18;//シート2の追加データはO列へ
29
29
  const ss = SpreadsheetApp.getActiveSpreadsheet();
30
- const sheet1 = ss.getSheetByName('抽出用(本文)');
30
+ const sheet1 = ss.getSheetByName('シート1');
31
- const sheet2 = ss.getSheetByName('<初校チム全体業務進捗一覧>ver3');
31
+ const sheet2 = ss.getSheetByName('ト2');
32
32
  //各シートのデータを取得
33
33
  const lastRow1 = sheet1.getLastRow();
34
34
  const lastRow2 = sheet2.getLastRow();

1

質問内容を変えました。

2024/01/29 08:28

投稿

maru
maru

スコア10

test CHANGED
@@ -1 +1 @@
1
- スプレッドシートからGASで抽出ハイパーリンクが外れ
1
+ スプレッドシートからGASで転記→リンク付のデータが外れてしまう
test CHANGED
@@ -1,23 +1,77 @@
1
1
  ### 実現したいこと
2
- グーグルのスプレッドシートからGASで抽出
3
2
 
3
+ シート1のI列にリンク付きのデータが保存されていて、
4
+ その列のデータをシート2のI列に転記し、
5
+ リンク付のデータはリンク付きのまま転記したい
4
6
 
5
7
 
6
8
  ### 発生している問題・分からないこと
7
- スプレッドシートの方にこのようにハイパーリンクで関数が入っているのですが、
8
- =IF(COUNTIFS(AK7,"xxxxx",AN7,"xxxxx"),HYPERLINK("URL","参照"),"")
9
-
10
- GASでこの部分含むデータを抽出しようとするとリンクが外れて「参照」の文字だけになってしまいます。
11
- 「参照」文字にリンクを貼ることは可能でょうか
9
+ ハーパーリンクのリンクが外れてまいます
12
-
13
-
14
-
15
10
 
16
11
 
17
12
  ### 該当のソースコード
13
+ ```ここに言語を入力
14
+ //重複を削除してから挿入(データ追加版)
15
+ function myFunction() {
16
+ //初期設定
17
+ const rowBegin = 2;//各シートともに開始行は2行目
18
+ const colBegin1 = 1;//シート1はA列から抽出
19
+ const colBegin2 = 4;//シート2はD列から挿入
20
+ const colCount = 5;//抽出、挿入は5列分
21
+ const colAdd1 = 6;//シート1の追加データはF列から
22
+ const colAdd2 = 15;//シート2の追加データはN列へ
23
+ const colAdd3 = 7;//シート1の追加データはG列から
24
+ const colAdd4 = 16;//シート2の追加データはO列へ
25
+ const colAdd5 = 8;//シート1の追加データはF列から
26
+ const colAdd6 = 17;//シート2の追加データはO列へ
27
+ const colAdd7 = 9;//シート1の追加データはO列へ
28
+ const colAdd8 = 18;//シート2の追加データはO列へ
29
+ const ss = SpreadsheetApp.getActiveSpreadsheet();
30
+ const sheet1 = ss.getSheetByName('抽出用(本文)');
31
+ const sheet2 = ss.getSheetByName('<初校チーム全体業務進捗一覧>ver3');
32
+ //各シートのデータを取得
33
+ const lastRow1 = sheet1.getLastRow();
34
+ const lastRow2 = sheet2.getLastRow();
35
+ const value1 = sheet1.getRange(rowBegin, colBegin1, lastRow1 - rowBegin + 1, colCount).getValues();
36
+ const valueAdd1 = sheet1.getRange(rowBegin, colAdd1, lastRow1 - rowBegin + 1, 1).getValues();
37
+ const valueAdd2 = sheet1.getRange(rowBegin, colAdd3, lastRow1 - rowBegin + 1, 1).getValues();
38
+ const valueAdd3 = sheet1.getRange(rowBegin, colAdd5, lastRow1 - rowBegin + 1, 1).getValues();
39
+ const valueAdd4 = sheet1.getRange(rowBegin, colAdd7, lastRow1 - rowBegin + 1, 1).getValues();
40
+ const value2 = sheet2.getRange(rowBegin, colBegin2, lastRow2 - rowBegin + 1, colCount).getValues();
41
+ //シート1のデータからシート2との重複を削除したデータと追加データを作成
42
+ const united = [];
43
+ const add1 = [];
44
+ const add2 = [];
45
+ const add3 = [];
46
+ const add4 = [];
47
+ //処理中のデータのインデックスを得るためfor(of)を forEachに変更
48
+ value1.forEach((item1, i) => {
49
+ let isSame = false;
50
+ for (const item2 of value2) {
51
+ if (item1.toString() == item2.toString()) {
52
+ isSame = true;
53
+ break;//一致したら直ちにisSameの真偽判定へ
54
+ }
55
+ }
56
+ if (!isSame) {
57
+ united.push(item1);
58
+ add1.push(valueAdd1[i]);
59
+ add2.push(valueAdd2[i]);
60
+ add3.push(valueAdd3[i]);
61
+ add4.push(valueAdd4[i]);//便乗して追加データの同じ行の値を配列に加える
62
+ }
63
+ });
64
+ //シート2の最終行に挿入
65
+ if (united.length > 0) {
66
+ sheet2.getRange(lastRow2 + 1, colBegin2, united.length, united[0].length).setValues(united);
67
+ sheet2.getRange(lastRow2 + 1, colAdd2, add1.length, add1[0].length).setValues(add1);
68
+ sheet2.getRange(lastRow2 + 1, colAdd4, add2.length, add2[0].length).setValues(add2);
69
+ sheet2.getRange(lastRow2 + 1, colAdd6, add3.length, add3[0].length).setValues(add3);
70
+ sheet2.getRange(lastRow2 + 1, colAdd8, add4.length, add4[0].length).setValues(add4);
71
+ }
72
+ }
73
+ ```
18
74
 
19
- ```
20
- 特になし
21
75
  ```
22
76
 
23
77
  ### 試したこと・調べたこと