質問編集履歴
3
全体の文章の構成を修正。 コードを分かりやすくするため、コメントを追記。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
ここに質問の内容を詳しく書いてください。
|
4
|
-
スプレッドシート
|
3
|
+
複数のスプレッドシートのリンク共有を手動でするのが面倒なのでGASで自動化しようと思い、下記のURLを参考にコードを組みました。
|
5
4
|
https://auto-worker.com/blog/?p=447#toc_id_3
|
6
5
|
(上記の記事製作者に感謝します。)
|
7
6
|
|
@@ -17,6 +16,10 @@
|
|
17
16
|
### 該当のソースコード
|
18
17
|
|
19
18
|
```ここに言語名を入力
|
19
|
+
/**
|
20
|
+
*シートに記載されているスプレッドシートのURLを取得して
|
21
|
+
*replace()でID部分以外を削除し、キーIDだけ抜き出し配列に格納するメソッド。
|
22
|
+
*/
|
20
23
|
function getId() {
|
21
24
|
const sh = SpreadsheetApp.getActiveSheet();
|
22
25
|
const getByUrl = sh.getRange(3,10,sh.getLastRow(),1).getValues();
|
@@ -30,14 +33,13 @@
|
|
30
33
|
.replace("/edit?ouid=[プライベート情報]",'')
|
31
34
|
.replace("/edit#gid=0",'');
|
32
35
|
getByIdArray.push([getById]);
|
33
|
-
|
34
36
|
}
|
35
|
-
return getByIdArray;
|
37
|
+
return getByIdArray; //スプレッドシートのキーIDを取り出し、配列に格納する。
|
36
38
|
}
|
37
39
|
|
38
40
|
function accessFree(){
|
39
41
|
const getByIdArray = getId();
|
40
|
-
console.log(getByIdArray); //エラー確認
|
42
|
+
console.log(getByIdArray); //エラー確認 1次配列で表示されるか確認。
|
41
43
|
let access;
|
42
44
|
let permission;
|
43
45
|
|
@@ -61,13 +63,15 @@
|
|
61
63
|
を削除したところ問題なく動きましたので、おそらくこの部分のエラーなのだと思っています。
|
62
64
|
しかし自分の知識不足か何故「Access denied」というエラーが発生するのか理解できませんでした。
|
63
65
|
「Access denied GAS」で検索して色々な記事を読みましたが、残念ながら解決できませんでした。
|
66
|
+
accessに代入した構文もpermissionに代入した構文も間違っていないと思うのですが、、、
|
64
67
|
|
65
|
-
下記の記事を参考にしましたが、実行許可がでないまま
|
68
|
+
下記の記事を参考にしましたが、実行許可がでないままメソッドが動きました。
|
66
69
|
https://nac-chib.com/blog/how-to-fix-oauth-error-gas-and-bigquery/#GASBigQueryAccess_Denied_BigQuery_BigQuery_No_OAuth_token_with_Google_Drive_scope_was_found
|
70
|
+
(上記の記事内容を簡単に説明すると、DriveAppのAPIを呼び出すための許可ができていなかったので、その許可が出るような簡単なメソッドを構築し実行して許可をすることで解決したという記事内容です。)
|
67
71
|
|
68
72
|
是非ご教授のほどよろしくお願いいたします。
|
69
73
|
|
70
74
|
### 補足情報(FW/ツールのバージョンなど)
|
71
75
|
V8ランタイム有効です。
|
72
76
|
先日リリースされた新しいほうのIDEを使って編集しております。
|
73
|
-
|
77
|
+
社内で利用するものになります。 すべてに公開という項目が無く、社内ユーザー限定でリンク共有されるようなビジネスアカウントで使っています。
|
2
誤字の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
### 試したこと
|
55
55
|
配列の取得がうまくいっていないのかと思い、配列取得のログを確認しましたが問題なく取得されていました。
|
56
56
|
要素の取り出しも問題ありませんでした。
|
57
|
-
試しに
|
57
|
+
試しに30行目の
|
58
58
|
|
59
59
|
.setSharing(access, permission);
|
60
60
|
|
1
コードの一部が抜けていたので補足しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -38,7 +38,6 @@
|
|
38
38
|
function accessFree(){
|
39
39
|
const getByIdArray = getId();
|
40
40
|
console.log(getByIdArray); //エラー確認
|
41
|
-
const document = DriveApp;
|
42
41
|
let access;
|
43
42
|
let permission;
|
44
43
|
|
@@ -47,7 +46,7 @@
|
|
47
46
|
|
48
47
|
for(let i = 0;i < getByIdArray.length;i++){
|
49
48
|
console.log(getByIdArray[i]); //エラー確認
|
50
|
-
|
49
|
+
DriveApp.getFileById(getByIdArray[i]).setSharing(access, permission);
|
51
50
|
}
|
52
51
|
}
|
53
52
|
```
|