質問編集履歴

2

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

2018/12/17 12:13

投稿

Arisa.Sunagawa
Arisa.Sunagawa

スコア15

test CHANGED
File without changes
test CHANGED
@@ -572,4 +572,240 @@
572
572
 
573
573
 
574
574
 
575
+ ### 追加の質問
576
+
577
+ kisojinさんの回答を元にコードを修正しました。
578
+
579
+ 無事GASからJavaScriptへ戻り値を返すことができました。
580
+
581
+
582
+
583
+ しかし
584
+
585
+ 1. GASからの戻り値がfalseだったらreturnするという処理を記述していたが、returnで処理を終了することができなくなった。
586
+
587
+   (現在はGlobal変数gs_ExitFlagでフラグを格納して、対応している)
588
+
589
+ 2.JavaScriptからGASへ引数を渡すことができない。
590
+
591
+ (シナリオ名かぶり検査SenarioNameCheckと
592
+
593
+   スプレッドシートに配列の値を順番に書き込むAddSessionが機能していない。
594
+
595
+ AddSessionで書き込まれた値がUndefinedになっている。)
596
+
597
+
598
+
599
+ ```javascript
600
+
601
+ <script type="text/javascript">
602
+
603
+ /// 入力コントロール名の配列定義
604
+
605
+ var TXT_ID =
606
+
607
+ [
608
+
609
+ "txtStartDate", //開始日時
610
+
611
+ "txtStartTime", //開始時刻
612
+
613
+ "txtEndTime", //終了時刻
614
+
615
+ "txtUseRuleSystem",//システム
616
+
617
+ "txtSenarioName", //シナリオ名
618
+
619
+ "txtUseTool", //使用ツール
620
+
621
+ "txtRecruitNum", //募集人数
622
+
623
+ "txtOverview" //概要
624
+
625
+ ];
626
+
627
+
628
+
629
+ // エラーコード
630
+
631
+ var ERR_CODE =
632
+
633
+ {
634
+
635
+ CONTROL_EMPTY : 1,
636
+
637
+ NO_GOOGLE_ID : 2,
638
+
639
+ NOT_UNIQUE_SESSION : 3,
640
+
641
+ };
642
+
643
+
644
+
645
+ // エラーメッセージ
646
+
647
+ var ERROR_MESSAGE =
648
+
649
+ [
650
+
575
- ここにより詳細な情報記載してください
651
+ "値入力してください",
652
+
653
+ "登録されてないよ",
654
+
655
+ "シナリオかぶり"
656
+
657
+ ];
658
+
659
+
660
+
661
+ // グローバル変数
662
+
663
+ var gs_ExitFlag = 0;
664
+
665
+
666
+
667
+
668
+
669
+ // GAS呼び出し後の処理
670
+
671
+ // アカウントチェック呼び出し
672
+
673
+ function CallGas_AccountCheck(ret)
674
+
675
+ {
676
+
677
+ if(ret == false)
678
+
679
+ {
680
+
681
+ OutputErrorMessage(ERR_CODE.NO_GOOGLE_ID);
682
+
683
+ }
684
+
685
+ }
686
+
687
+
688
+
689
+ // シナリオ名かぶり検査
690
+
691
+ function CallGas_SenarioNameCheck(ret)
692
+
693
+ {
694
+
695
+ if(ret == false)
696
+
697
+ {
698
+
699
+ OutputErrorMessage(ERR_CODE.NOT_UNIQUE_SESSION);
700
+
701
+ }
702
+
703
+ }
704
+
705
+
706
+
707
+ // JavaScript内サブルーチン
708
+
709
+ // HTMLのコントロールの値を配列に格納
710
+
711
+ function GetAllControlValue(TXT_ID)
712
+
713
+ {
714
+
715
+ var i = 0;
716
+
717
+ for(i = 0; i < TXT_ID.length;i++)
718
+
719
+ {
720
+
721
+ // ここセンスない。Valueがnullならと書き換えたい。
722
+
723
+ if(document.getElementById(TXT_ID[i]).value == "")
724
+
725
+ {
726
+
727
+ OutputErrorMessage(ERR_CODE.CONTROL_EMPTY);
728
+
729
+ }
730
+
731
+ }
732
+
733
+ }
734
+
735
+ // 終了フラグをOnにして、エラーメッセージを出力
736
+
737
+ function OutputErrorMessage(MessageID)
738
+
739
+ {
740
+
741
+ if(gs_ExitFlag == 0)
742
+
743
+ {
744
+
745
+ document.getElementById("txtDebug").value
746
+
747
+ = ERROR_MESSAGE[MessageID];
748
+
749
+ gs_ExitFlag = 1;
750
+
751
+ }
752
+
753
+ }
754
+
755
+
756
+
757
+
758
+
759
+ // ボタン押下時の処理
760
+
761
+ function btnAddSession_Click()
762
+
763
+ {
764
+
765
+ // アカウントチェック
766
+
767
+ google.script.run
768
+
769
+ .withSuccessHandler(CallGas_AccountCheck)
770
+
771
+ .AccountCheck();
772
+
773
+
774
+
775
+ // コントロールの値を取得
776
+
777
+ var arrSendData = Array(TXT_ID.length);
778
+
779
+ GetAllControlValue(TXT_ID);
780
+
781
+
782
+
783
+ // シナリオかぶり検査
784
+
785
+ google.script.run
786
+
787
+ .withSuccessHandler(CallGas_SenarioNameCheck)
788
+
789
+ .SenarioNameCheck(document.getElementById("txtSenarioName").value);
790
+
791
+
792
+
793
+ // GAS へデータを送信
794
+
795
+ // 送信データがすべてundefinedになって出力される。なぜ?
796
+
797
+ // 変数の型の問題??
798
+
799
+ if(gs_ExitFlag == 0 )
800
+
801
+ {
802
+
803
+ google.script.run.withSuccessHandler().AddSession(arrSendData);
804
+
805
+ }
806
+
807
+ }
808
+
809
+ </script>
810
+
811
+ ```

1

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

2018/12/17 12:13

投稿

Arisa.Sunagawa
Arisa.Sunagawa

スコア15

test CHANGED
File without changes
test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- ```GoogleAppsScript
29
+ ```javascript
30
30
 
31
31
  ///////////////////////////////////////////////////////////////////////////////
32
32
 
@@ -38,7 +38,7 @@
38
38
 
39
39
  var DATABASE_FILE_NAME
40
40
 
41
- = '1Crd0g4w7-_FM531-WIo4hxg4pj8_QIPuifyPs1bIac0';
41
+ = '[ID]';
42
42
 
43
43
 
44
44