質問編集履歴
7
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,77 +1,8 @@
|
|
1
|
-
|
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
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
![
|
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
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-30/
|
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
修正
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
修正
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
間違え。
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('
|
31
|
+
const sheet2 = ss.getSheetByName('シート2');
|
32
32
|
//各シートのデータを取得
|
33
33
|
const lastRow1 = sheet1.getLastRow();
|
34
34
|
const lastRow2 = sheet2.getLastRow();
|
1
質問内容を変えました。
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
|
### 試したこと・調べたこと
|