>source

안녕하세요, 데이터 목록 태그 드롭 다운 필드에이 코드를 사용하여 목록에서 이름과 이메일을 선택하거나 새 이름 또는 이메일을 삽입 할 수 있습니다 (Tanaike에게 감사드립니다). 선택한 이름이있는 경우 이메일 필드를 자동으로 채우는 코드로 누군가 나를 도울 수 있는지 궁금합니다. 이름 목록은 내 Google 시트 DD 열 'B'에 있으며 이메일은 'C'열에 있습니다. 여기에 제가 사용하고있는 코드가 있습니다. 작동 방식은 이제 이메일을 선택할 수 있지만 자동으로 채우고 싶습니다. 감사

<!--------------- Name Select ------------------->
      <script>
                    function namedd() {
                    var value = document.getElementById("input").value;
                    console.log(value)
                    }
                  </script>
                  <div class="form-row">
                    <div class="form-group col-md-5">
                      <label for="name">name</label>
                      <input type="text" id="input" class="form-control" list="name" name="name" placeholder="Select name" >
                      <datalist id="name"  >
                     <?
                      var sheet   = SpreadsheetApp.getActive().getSheetByName("DD");
                      var lastRow = sheet.getLastRow();
                      var myRange = sheet.getRange("B2:B"+lastRow);
                      var data    = myRange.getValues();
                      for (var i = 0; i < data.length; ++i) { ?>
                      <option value="<?!= data[i] ?>">
                    <? } ?>
                    </datalist>
                  
                    </div>
<!--------------- Email Select ------------------->
                 <script>
                    function emaildd() {
                    var value = document.getElementById("input").value;
                    console.log(value)
                    }
                  </script>
                  <div class="form-row">
                    <div class="form-group col-md-5">
                      <label for="email">email</label>
                      <input type="email" id="input" class="form-control" list="email" name="email" placeholder="Select email" >
                      <datalist id="email"  >
                     <?
                      var sheet   = SpreadsheetApp.getActive().getSheetByName("DD");
                      var lastRow = sheet.getLastRow();
                      var myRange = sheet.getRange("C2:C"+lastRow);
                      var data    = myRange.getValues();
                      for (var i = 0; i < data.length; ++i) { ?>
                      <option value="<?!= data[i] ?>">
                    <? } ?>
                    </datalist>
                  
                    </div>
      

  • 답변 # 1

    나는 당신의 목표를 다음과 같이 믿습니다.

    선택한 이름으로 이메일 값을 검색하여 드롭 다운 목록에서 이름을 선택한 경우 이메일의 드롭 다운 목록에 이메일 값을 설정하고자합니다.

    귀하의 상황에서 이름과 이메일 값은 각각 "DD"시트의 "B"및 "C"열에 입력됩니다.

    귀하의 목표를 달성하기 위해 사용을 제안하고 싶습니다 addEventListener()google.script.run . 현재 스크립트를 사용할 때 다음 수정은 어떻습니까?

    수정 된 스크립트 :

    다음 스크립트를 복사하여 스크립트 편집기에 붙여 넣으십시오. 이 경우 Google Apps Script의 기능이 추가됩니다.

    HTML&Javascript 쪽 :

    HTML에는 2 개의 ID가 있습니다. input . 그래서이 수정에서 그것들은 input1input2 . 조심하세요.

    <div class="form-row">
      <div class="form-group col-md-5">
        <label for="name">name</label>
        <input type="text" id="input1" class="form-control" list="name" name="name" placeholder="Select name">
        <datalist id="name">
          <?
    var sheet   = SpreadsheetApp.getActive().getSheetByName("DD");
    var lastRow = sheet.getLastRow();
    var myRange = sheet.getRange("B2:B"+lastRow);
    var data    = myRange.getValues();
    for (var i = 0; i < data.length; ++i) { ?>
          <option value="<?!= data[i] ?>">
            <? } ?>
        </datalist>
      </div>
    </div>
    <div class="form-row">
      <div class="form-group col-md-5">
        <label for="email">email</label>
        <input type="email" id="input2" class="form-control" list="email" name="email" placeholder="Select email">
        <datalist id="email">
          <?
    var sheet   = SpreadsheetApp.getActive().getSheetByName("DD");
    var lastRow = sheet.getLastRow();
    var myRange = sheet.getRange("C2:C"+lastRow);
    var data    = myRange.getValues();
    for (var i = 0; i < data.length; ++i) { ?>
          <option value="<?!= data[i] ?>">
            <? } ?>
        </datalist>
      </div>
    </div>
    <script>
    document.getElementById("input1").addEventListener("change", () => {
      google.script.run.withSuccessHandler(v => {
        document.getElementById("input2").value = v;
      }).getEmailFromName(document.getElementById("input1").value);
    });
    function namedd() {
      var value = document.getElementById("input1").value;
      console.log(value)
    }
    function emaildd() {
      var value = document.getElementById("input2").value;
      console.log(value)
    }
    </script>
    
    

    Google Apps Script 측 :

    이 스크립트를 Google Apps Script로 복사하여 붙여 넣으십시오.

    function getEmailFromName(v) {
      var sheet = SpreadsheetApp.getActive().getSheetByName("DD");
      var values = sheet.getRange("B2:C"+sheet.getLastRow()).getValues();
      var res = values.filter(([b]) => b == v);
      return res.length > 0 ? res[0][1] : "";
    }
    
    

    위의 HTML이 열리고 드롭 다운 목록의 이름을 선택하면 다음을 실행하여 이메일의 드롭 다운 목록이 변경됩니다. google.script.run .

    노트 :

    Web Apps로 HTML 위에서 여는 경우 Web Apps의 스크립트를 수정할 때 Web Apps를 새 버전으로 재배포하십시오. 이를 통해 최신 스크립트가 웹 앱에 반영됩니다. 조심하세요.

    이 수정 된 스크립트에서는 각 이메일이 이메일의 고유 한 값이라고 가정합니다. 조심하세요.

    참조 :

    addEventListener ()

    클래스 google.script.run

관련 자료

  • 이전 c# - WaitAll의 사전 결과에 추가
  • 다음 Flutter의 Google지도에서 파란색 점 표시기 (내 위치) 제거