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

質問編集履歴

2

回答を元にコードを修正したが、別の問題が発生したため追加質問

2018/12/17 12:13

投稿

Arisa.Sunagawa
Arisa.Sunagawa

スコア16

title CHANGED
File without changes
body CHANGED
@@ -285,4 +285,122 @@
285
285
  ```
286
286
 
287
287
 
288
+ ### 追加の質問
289
+ kisojinさんの回答を元にコードを修正しました。
290
+ 無事GASからJavaScriptへ戻り値を返すことができました。
291
+
292
+ しかし
293
+ 1. GASからの戻り値がfalseだったらreturnするという処理を記述していたが、returnで処理を終了することができなくなった。
294
+   (現在はGlobal変数gs_ExitFlagでフラグを格納して、対応している)
295
+ 2.JavaScriptからGASへ引数を渡すことができない。
296
+ (シナリオ名かぶり検査SenarioNameCheckと
297
+   スプレッドシートに配列の値を順番に書き込むAddSessionが機能していない。
298
+ AddSessionで書き込まれた値がUndefinedになっている。)
299
+
300
+ ```javascript
301
+ <script type="text/javascript">
302
+ /// 入力コントロール名の配列定義
303
+ var TXT_ID =
304
+ [
305
+ "txtStartDate", //開始日時
306
+ "txtStartTime", //開始時刻
307
+ "txtEndTime", //終了時刻
308
+ "txtUseRuleSystem",//システム
309
+ "txtSenarioName", //シナリオ名
310
+ "txtUseTool", //使用ツール
311
+ "txtRecruitNum", //募集人数
312
+ "txtOverview" //概要
313
+ ];
314
+
315
+ // エラーコード
316
+ var ERR_CODE =
317
+ {
318
+ CONTROL_EMPTY : 1,
319
+ NO_GOOGLE_ID : 2,
320
+ NOT_UNIQUE_SESSION : 3,
321
+ };
322
+
323
+ // エラーメッセージ
324
+ var ERROR_MESSAGE =
325
+ [
288
- ここにより詳細な情報記載してください
326
+ "値入力してください",
327
+ "登録されてないよ",
328
+ "シナリオかぶり"
329
+ ];
330
+
331
+ // グローバル変数
332
+ var gs_ExitFlag = 0;
333
+
334
+
335
+ // GAS呼び出し後の処理
336
+ // アカウントチェック呼び出し
337
+ function CallGas_AccountCheck(ret)
338
+ {
339
+ if(ret == false)
340
+ {
341
+ OutputErrorMessage(ERR_CODE.NO_GOOGLE_ID);
342
+ }
343
+ }
344
+
345
+ // シナリオ名かぶり検査
346
+ function CallGas_SenarioNameCheck(ret)
347
+ {
348
+ if(ret == false)
349
+ {
350
+ OutputErrorMessage(ERR_CODE.NOT_UNIQUE_SESSION);
351
+ }
352
+ }
353
+
354
+ // JavaScript内サブルーチン
355
+ // HTMLのコントロールの値を配列に格納
356
+ function GetAllControlValue(TXT_ID)
357
+ {
358
+ var i = 0;
359
+ for(i = 0; i < TXT_ID.length;i++)
360
+ {
361
+ // ここセンスない。Valueがnullならと書き換えたい。
362
+ if(document.getElementById(TXT_ID[i]).value == "")
363
+ {
364
+ OutputErrorMessage(ERR_CODE.CONTROL_EMPTY);
365
+ }
366
+ }
367
+ }
368
+ // 終了フラグをOnにして、エラーメッセージを出力
369
+ function OutputErrorMessage(MessageID)
370
+ {
371
+ if(gs_ExitFlag == 0)
372
+ {
373
+ document.getElementById("txtDebug").value
374
+ = ERROR_MESSAGE[MessageID];
375
+ gs_ExitFlag = 1;
376
+ }
377
+ }
378
+
379
+
380
+ // ボタン押下時の処理
381
+ function btnAddSession_Click()
382
+ {
383
+ // アカウントチェック
384
+ google.script.run
385
+ .withSuccessHandler(CallGas_AccountCheck)
386
+ .AccountCheck();
387
+
388
+ // コントロールの値を取得
389
+ var arrSendData = Array(TXT_ID.length);
390
+ GetAllControlValue(TXT_ID);
391
+
392
+ // シナリオかぶり検査
393
+ google.script.run
394
+ .withSuccessHandler(CallGas_SenarioNameCheck)
395
+ .SenarioNameCheck(document.getElementById("txtSenarioName").value);
396
+
397
+ // GAS へデータを送信
398
+ // 送信データがすべてundefinedになって出力される。なぜ?
399
+ // 変数の型の問題??
400
+ if(gs_ExitFlag == 0 )
401
+ {
402
+ google.script.run.withSuccessHandler().AddSession(arrSendData);
403
+ }
404
+ }
405
+ </script>
406
+ ```

1

コメントが反映されないためGASからJavaScriptにコードの指定を修正、SpreadSheetIDを削除

2018/12/17 12:13

投稿

Arisa.Sunagawa
Arisa.Sunagawa

スコア16

title CHANGED
File without changes
body CHANGED
@@ -12,13 +12,13 @@
12
12
 
13
13
  ### 該当のソースコード
14
14
 
15
- ```GoogleAppsScript
15
+ ```javascript
16
16
  ///////////////////////////////////////////////////////////////////////////////
17
17
  ///// 定数の宣言 /////
18
18
  ///////////////////////////////////////////////////////////////////////////////
19
19
  // スプレッドシートのID(https://docs.google.com/d/[ID]/edit)
20
20
  var DATABASE_FILE_NAME
21
- = '1Crd0g4w7-_FM531-WIo4hxg4pj8_QIPuifyPs1bIac0';
21
+ = '[ID]';
22
22
 
23
23
  var DATABASE_SS_MAIN = 'DataBase';
24
24
  var DATABASE_SS_USER_ID = 'UserID';