teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

試したこと4を追記。

2019/01/18 16:22

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -160,7 +160,20 @@
160
160
 
161
161
  やはり、onOpenで「実行」をクリックしなければ、「このドキュメントに添付されたスクリプトを実行するには、あなたの許可が必要です。」が表示されないようです。
162
162
 
163
+ ### 試したこと4:別のスクリプトで試しても実現できない
163
164
 
165
+ 回答者さんに試していただきました。
166
+ > 普通に(onOpenではない)動かす関数をスクリプトエディタで書いた上で、エディタ画面で実行。
167
+ > 同じように、承認を求められ、同じように動作しなかった。
168
+ > 少なくとも数ヶ月前までは、その場で最初の実行が走っていた。どうも承認した瞬間の最初の関数呼び出しの動き自体がかわってる気がする……
169
+
170
+ ちなみにGsuite外の個人用のアカウントでも試していただきましたが、
171
+ 違った動きはみられませんでした。
172
+
173
+ ### これはもうgoogleの機能の問題なのか?
174
+
175
+ という感じがしていますが…。なぜなのでしょうか…。
176
+
164
177
  ### 補足情報
165
178
 
166
179
  - 当方Gsuiteユーザです

5

試したこと3を追記しました。

2019/01/18 16:21

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -148,18 +148,29 @@
148
148
 
149
149
  に変更して再度実行しましたが、改善は見られませんでした。
150
150
 
151
+ ### 試したこと3:onOpenを削除して、トリガーを設定
151
152
 
153
+ onOpen⇒addMenuを起動するスクリプトをまるっと削除して、
154
+ トリガーを設定しました。
155
+ (実行する関数/makeContactFromList」「イベントソース/スプレッドシート・起動時」で設定)
156
+
157
+
158
+
159
+ 結果、「このドキュメントに添付されたスクリプトを実行するには、あなたの許可が必要です。」が表示されなくなり、前に進みませんでした。
160
+
161
+ やはり、onOpenで「実行」をクリックしなければ、「このドキュメントに添付されたスクリプトを実行するには、あなたの許可が必要です。」が表示されないようです。
162
+
163
+
152
164
  ### 補足情報
153
165
 
154
166
  - 当方Gsuiteユーザです
167
+
155
168
  - 一度実行すればキレイに更新されるので、スクリプトの記述に問題があるわけではなさそうです。
169
+
156
170
  - 当初(2018年9月、10月頃)はうまくいっていたのですが、11月頃からできなくなりました。
171
+
157
172
  - ~~できなくなったタイミングがGsuiteにSSO(SAML2.0)を導入したあたりと一致しているように思います。~~
158
173
  ⇒ GsuiteでSSO導入無しのユーザさんに検証いただく。結果、同様の事象が発生したので関係なさそう。
159
- - トリガー設定はスクリプトの制作段階(2018年8月頃)で一度設定してやってみましたが、
160
- (確か「実行する関数/makeContactFromList」「イベントソース/スプレッドシート・起動時」で設定)
161
- トリガーだけだと、「このドキュメントに添付されたスクリプトを実行するには、あなたの許可が必要です。」が表示されず、やむなくonOpenでクリックするひと手間を入れた記憶があります。
162
- …が、もう一度やってみます。
163
174
 
164
175
  ### 実行トランススクリプトの結果
165
176
 

4

実行トランススクリプトをcode表示に変更

2019/01/17 08:32

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -169,7 +169,7 @@
169
169
  ・2回目の実行:onOpenをすっとばして、fanction実行されている
170
170
  です。
171
171
 
172
-
172
+ ```ログ
173
173
  **(実行前)※作成時に試したログだと思われます**
174
174
  [19-01-16 17:20:08:132 PST] SpreadsheetApp.getActiveRange() [0 秒]
175
175
  [19-01-16 17:20:08:132 PST] Range.getRow() [0 秒]
@@ -229,5 +229,5 @@
229
229
  [19-01-16 17:22:45:514 PST] SpreadsheetApp.getActiveSpreadsheet() [0 秒]
230
230
  [19-01-16 17:22:45:584 PST] Spreadsheet.toast([画面を閉じてください, 完了, -1.0]) [0.07 秒]
231
231
  [19-01-16 17:22:45:651 PST] 実行が無事終了しました(合計ランタイム 34.5 秒)
232
-
232
+ ```
233
233
  連絡先はきれいに更新されました。

3

追加情報を記載(補足事項)

2019/01/17 05:59

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -34,9 +34,8 @@
34
34
  一度のクリックで実行する対処法をご存知の方、ご教示いただけないでしょうか。
35
35
 
36
36
 
37
+ ### エラーメッセージ
37
38
 
38
- ### 発生している問題・エラーメッセージ
39
-
40
39
  エラーメッセージは特に何も出ません。
41
40
 
42
41
  ### 該当のソースコード
@@ -119,15 +118,49 @@
119
118
  ので、SSOの関連は低いことが推察されます。
120
119
 
121
120
 
121
+ ### 試したこと2:addMenuメソッド⇒addItemメソッドに変更
122
122
 
123
+ (変更前)
124
+ ```ここに言語名を入力
125
+ /** メニューへ登録 */
126
+ function onOpen() {
127
+ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
128
+ var entries = [{
123
- ### 補足情報(FW/ツールのバージョンなど)
129
+ name : "連絡先を更新",
130
+ functionName : "makeContactFromList"
131
+ }];
132
+ spreadsheet.addMenu("ここをクリックしてください", entries);
133
+ };
134
+ ```
124
135
 
125
- ・当方Gsuiteユーザです
136
+
126
- ・一度実行すればキレイに更新されるので、スクリプトの記述に問題があるわけではなさそうです。
127
- ・当初はうまくいっていたのですが、突然できなくなりました。
128
- ・~~できなくなったタイミングがGsuiteにSSO(SAML2.0)を導入したあたりと一致しているように思います。~~
129
-  ⇒ GsuiteでSSO導入無しのユーザさんに検証いただく。結果、同様の事象が発生したので関係なさそう。
130
137
 
138
+ (変更後)
139
+ ```ここに言語名を入力
140
+ /** メニューへ登録 */
141
+ function onOpen() {
142
+ var ui = SpreadsheetApp.getUi(); // Uiクラスを取得する
143
+ var menu = ui.createMenu('ここをクリックしてください'); // Uiクラスからメニューを作成する
144
+ menu.addItem('連絡先を更新', 'makeContactFromList'); // メニューにアイテムを追加する
145
+ menu.addToUi(); // メニューをUiクラスに追加する
146
+ };
147
+ ```
148
+
149
+ に変更して再度実行しましたが、改善は見られませんでした。
150
+
151
+
152
+ ### 補足情報
153
+
154
+ - 当方Gsuiteユーザです
155
+ - 一度実行すればキレイに更新されるので、スクリプトの記述に問題があるわけではなさそうです。
156
+ - 当初(2018年9月、10月頃)はうまくいっていたのですが、11月頃からできなくなりました。
157
+ - ~~できなくなったタイミングがGsuiteにSSO(SAML2.0)を導入したあたりと一致しているように思います。~~
158
+ ⇒ GsuiteでSSO導入無しのユーザさんに検証いただく。結果、同様の事象が発生したので関係なさそう。
159
+ - トリガー設定はスクリプトの制作段階(2018年8月頃)で一度設定してやってみましたが、
160
+ (確か「実行する関数/makeContactFromList」「イベントソース/スプレッドシート・起動時」で設定)
161
+ トリガーだけだと、「このドキュメントに添付されたスクリプトを実行するには、あなたの許可が必要です。」が表示されず、やむなくonOpenでクリックするひと手間を入れた記憶があります。
162
+ …が、もう一度やってみます。
163
+
131
164
  ### 実行トランススクリプトの結果
132
165
 
133
166
  ご依頼ありがとうございます。下記にて記載いたしますが要約は

2

内容をより詳細にした。1つの検証結果を追記した。

2019/01/17 05:47

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -24,8 +24,13 @@
24
24
  ちなみに再度③の「連絡先を更新」ボタンをクリックすると、
25
25
  ⑥のfunctionが実行されはじめます。
26
26
 
27
- 当方Gsuiteユーザで、出来なくなったタイミングが、GsuiteにSSO入れたタイミング一致しているうな気がします。
27
+ ### 問題端的に言う(papinianusさんり)
28
28
 
29
+ > 質問はつきつめると、「最初の承認直後には、スクリプトが動作してくれないがそれはなぜか?」
30
+
31
+ まさにこれです。
32
+
33
+
29
34
  一度のクリックで実行する対処法をご存知の方、ご教示いただけないでしょうか。
30
35
 
31
36
 
@@ -103,16 +108,25 @@
103
108
  };
104
109
  ```
105
110
 
106
- ### 試したこと
107
111
 
108
- ここに問題に対して試したことを記載してくださ
112
+ ### 試したこと:SSO(SAML2.0)が関係しているか検証
109
113
 
114
+ ~~当方Gsuiteユーザで、出来なくなったタイミングが、GsuiteにSSOを入れたタイミングと一致しているような気がします。~~
115
+
116
+ ⇒ GsuiteでSSOを入れていないユーザさんに事象再現をしていただきました。
117
+ 結果、当方と同じく、承認した直後にはスクリプトは走らず、二回目に実行したらグループに入りました。
118
+
119
+ ので、SSOの関連は低いことが推察されます。
120
+
121
+
122
+
110
123
  ### 補足情報(FW/ツールのバージョンなど)
111
124
 
112
125
  ・当方Gsuiteユーザです
113
126
  ・一度実行すればキレイに更新されるので、スクリプトの記述に問題があるわけではなさそうです。
114
127
  ・当初はうまくいっていたのですが、突然できなくなりました。
115
- ・できなくなったタイミングがGsuiteにSSO(SAML2.0)を導入したあたりと一致しているように思います。
128
+ ~~できなくなったタイミングがGsuiteにSSO(SAML2.0)を導入したあたりと一致しているように思います。~~
129
+  ⇒ GsuiteでSSO導入無しのユーザさんに検証いただく。結果、同様の事象が発生したので関係なさそう。
116
130
 
117
131
  ### 実行トランススクリプトの結果
118
132
 

1

実行トランススクリプト情報を追記

2019/01/17 05:23

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -112,4 +112,75 @@
112
112
  ・当方Gsuiteユーザです
113
113
  ・一度実行すればキレイに更新されるので、スクリプトの記述に問題があるわけではなさそうです。
114
114
  ・当初はうまくいっていたのですが、突然できなくなりました。
115
- ・できなくなったタイミングがGsuiteにSSO(SAML2.0)を導入したあたりと一致しているように思います。
115
+ ・できなくなったタイミングがGsuiteにSSO(SAML2.0)を導入したあたりと一致しているように思います。
116
+
117
+ ### 実行トランススクリプトの結果
118
+
119
+ ご依頼ありがとうございます。下記にて記載いたしますが要約は
120
+
121
+ ・1回目の実行:何も結果表示されない
122
+ ・2回目の実行:onOpenをすっとばして、fanction実行されている
123
+ です。
124
+
125
+
126
+ **(実行前)※作成時に試したログだと思われます**
127
+ [19-01-16 17:20:08:132 PST] SpreadsheetApp.getActiveRange() [0 秒]
128
+ [19-01-16 17:20:08:132 PST] Range.getRow() [0 秒]
129
+ [19-01-16 17:20:08:132 PST] Range.getLastRow() [0 秒]
130
+ [19-01-16 17:20:08:132 PST] Range.getColumn() [0 秒]
131
+ [19-01-16 17:20:08:133 PST] Range.getLastColumn() [0 秒]
132
+ [19-01-16 17:20:08:133 PST] SpreadsheetApp.getActiveSpreadsheet() [0 秒]
133
+ [19-01-16 17:20:08:134 PST] 実行を開始しています
134
+ [19-01-16 17:20:08:139 PST] SpreadsheetApp.getActiveSpreadsheet() [0 秒]
135
+ [19-01-16 17:20:08:228 PST] Spreadsheet.addMenu([ここをクリックしてください, [{functionName=makeContactFromList, name=連絡先を更新}]]) [0.087 秒]
136
+ [19-01-16 17:20:08:357 PST] 実行が無事終了しました(合計ランタイム 0.089 秒)
137
+
138
+ **(一回目の実行後)※変化ありませんでした**
139
+ [19-01-16 17:20:08:132 PST] SpreadsheetApp.getActiveRange() [0 秒]
140
+ [19-01-16 17:20:08:132 PST] Range.getRow() [0 秒]
141
+ [19-01-16 17:20:08:132 PST] Range.getLastRow() [0 秒]
142
+ [19-01-16 17:20:08:132 PST] Range.getColumn() [0 秒]
143
+ [19-01-16 17:20:08:133 PST] Range.getLastColumn() [0 秒]
144
+ [19-01-16 17:20:08:133 PST] SpreadsheetApp.getActiveSpreadsheet() [0 秒]
145
+ [19-01-16 17:20:08:134 PST] 実行を開始しています
146
+ [19-01-16 17:20:08:139 PST] SpreadsheetApp.getActiveSpreadsheet() [0 秒]
147
+ [19-01-16 17:20:08:228 PST] Spreadsheet.addMenu([ここをクリックしてください, [{functionName=makeContactFromList, name=連絡先を更新}]]) [0.087 秒]
148
+ [19-01-16 17:20:08:357 PST] 実行が無事終了しました(合計ランタイム 0.089 秒)
149
+
150
+ **(2回目の実行後)※functionのみ実行されます**
151
+ [19-01-16 17:22:11:077 PST] 実行を開始しています
152
+ [19-01-16 17:22:11:086 PST] SpreadsheetApp.getActiveSpreadsheet() [0 秒]
153
+ [19-01-16 17:22:11:163 PST] Spreadsheet.toast([処理中, , -1.0]) [0.076 秒]
154
+ [19-01-16 17:22:11:535 PST] ContactsApp.getContact([//@email.com]) [0.37 秒]
155
+ [19-01-16 17:22:14:403 PST] ContactsApp.getContact([//@email.com]) [2.867 秒]
156
+ [19-01-16 17:22:17:038 PST] ContactsApp.getContact([//@email.com]) [2.635 秒]
157
+ [19-01-16 17:22:19:945 PST] ContactsApp.getContact([//@email.com]) [2.906 秒]
158
+ [19-01-16 17:22:22:782 PST] ContactsApp.getContact([//@email.com]) [2.836 秒]
159
+ [19-01-16 17:22:25:156 PST] ContactsApp.getContact([//@email.com]) [2.373 秒]
160
+ [19-01-16 17:22:28:088 PST] ContactsApp.getContact([//@email.com]) [2.931 秒]
161
+ [19-01-16 17:22:30:968 PST] ContactsApp.getContact([//@email.com]) [2.88 秒]
162
+ [19-01-16 17:22:33:801 PST] ContactsApp.getContact([//@email.com]) [2.83 秒]
163
+ [19-01-16 17:22:36:555 PST] ContactsApp.getContact([//@email.com]) [2.753 秒]
164
+ [19-01-16 17:22:36:556 PST] SpreadsheetApp.getActiveSheet() [0 秒]
165
+ [19-01-16 17:22:36:866 PST] Sheet.getDataRange() [0.309 秒]
166
+ [19-01-16 17:22:36:866 PST] Range.getNumRows() [0 秒]
167
+ [19-01-16 17:22:36:941 PST] Range.getValues() [0.074 秒]
168
+ [19-01-16 17:22:39:606 PST] ContactsApp.getContact([//@email.com]) [2.664 秒]
169
+ [19-01-16 17:22:39:687 PST] ContactsApp.getContactGroup([●●●]) [0.081 秒]
170
+ [19-01-16 17:22:39:688 PST] Contact.addToGroup([ContactGroup]) [0 秒]
171
+ [19-01-16 17:22:39:688 PST] ContactGroup.addContact([Contact]) [0 秒]
172
+ [19-01-16 17:22:39:689 PST] Logger.log(//@email.comを●●●に追加, []]) [0 秒]
173
+ [19-01-16 17:22:42:534 PST] ContactsApp.getContact([//@email.com]) [2.844 秒]
174
+ [19-01-16 17:22:42:613 PST] ContactsApp.getContactGroup([▼▼▼]) [0.078 秒]
175
+ [19-01-16 17:22:42:613 PST] Contact.addToGroup([ContactGroup]) [0 秒]
176
+ [19-01-16 17:22:42:614 PST] ContactGroup.addContact([Contact]) [0 秒]
177
+ [19-01-16 17:22:42:614 PST] Logger.log([//@email.comを▼▼▼に追加, []]) [0 秒]
178
+ [19-01-16 17:22:45:512 PST] ContactsApp.getContact([//@email.com]) [2.897 秒]
179
+ [19-01-16 17:22:45:512 PST] Contact.addToGroup([ContactGroup]) [0 秒]
180
+ [19-01-16 17:22:45:513 PST] ContactGroup.addContact([Contact]) [0 秒]
181
+ [19-01-16 17:22:45:513 PST] Logger.log([//@email.comを▼▼▼に追加, []]) [0 秒]
182
+ [19-01-16 17:22:45:514 PST] SpreadsheetApp.getActiveSpreadsheet() [0 秒]
183
+ [19-01-16 17:22:45:584 PST] Spreadsheet.toast([画面を閉じてください, 完了, -1.0]) [0.07 秒]
184
+ [19-01-16 17:22:45:651 PST] 実行が無事終了しました(合計ランタイム 34.5 秒)
185
+
186
+ 連絡先はきれいに更新されました。