Google Apps Script HTML 양식은 해외 사용자 용으로 제출되지 않습니다.

만에 하나

사용자 데이터를 제출하는 작은 사이드 바 양식이 있습니다. 미국에있는 사람이라면 누구나 사용할 수 있지만 해외에서 온 누군가가 양식을 제출하려고하면 실패합니다. 나는 해외 사용자와 동일한 사용자 계정으로 로그인했고 양식이 나를 위해 제출했습니다. GAS에서 이와 같은 문제가 발생한 적이 없습니다. 사용자가 로그인 한 계정은 스크립트가 들어있는 스프레드 시트를 소유하고 있으며 데이터를 제출하기 위해 로컬 및 미국 IP 주소를 모두 시도했습니다 (중요할지 여부는 확실하지 않습니다.) 스크립트에 변경 / 포함하려면 무엇이 필요합니까? 모든 사용자가 양식을 제출할 수 있도록 허용 하시겠습니까? Webapp 및 트리거를 만드는 것이 해결 될까요?

Code.gs

//OPEN THE FORM IN SIDEBAR 
function showFormInSidebar() {      
  
  var form = HtmlService.createTemplateFromFile('Index').evaluate().setTitle('New Client');
  SpreadsheetApp.getUi().showSidebar(form);
  
}

//PROCESS FORM DATA
function processForm(formObject){ 
  
  var notes = [formObject.client,
               formObject.website,
               formObject.email,
               formObject.plan];
  
  var mTabs = [formObject.client,
               formObject.plan,
               formObject.timeAllowed,
               '',
               '',
               '00:00:00.000'];
  
  pushToSheets(notes,mTabs);
  
}

//INCLUDE HTML PARTS, EG. JAVASCRIPT, CSS, OTHER HTML FILES
function include(filename) {
  
  return HtmlService.createHtmlOutputFromFile(filename).getContent();
  
}


//THIS FUNCTION IS USED TO PUSH DATA TO EACH RESPECTIVE SHEET FROM THE SIDEBAR FORM SUBMISSION
function pushToSheets(notes,mTabs) {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var noteTab = ss.getSheetByName('NOTES');
  var sheetArr = ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEPT','OCT','NOV','DEC'];
  //  var sheetArr = ['JAN','FEB'];
  var nLast = noteTab.getLastRow();
  noteTab.insertRowBefore(nLast+1);
  noteTab.getRange(nLast+1, 1,1,4).setValues([notes]);
  noteTab.getRange(2,1,nLast+1,17).sort([{column: 4, ascending: true}, {column: 1, ascending: true}])
  
  for(var x = 0; x < sheetArr.length; x++) {
    
    var sheet = ss.getSheetByName(sheetArr[x]);
    var sLength = sheet.getLastRow();
    sheet.insertRowBefore(sLength-1);
    sheet.getRange(sLength-1, 1,1,6).setValues([mTabs]);
    sheet.getRange(2, 1,sLength,11).sort([{column: 2, ascending: true}, {column: 1, ascending: true}])
    
  }
  
}

Index.html

<!doctype html>
<html lang="en">

  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <?!= include('JavaScript'); ?> <!-- See JavaScript.html file -->
    <title>Contact Details</title>
  </head>
  
  <body class="bg-secondary text-light">
    <div class="container">
      <?!= include('Form'); ?> <!-- See Form.html file -->
    </div>
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
   <script>
  $('#timeAllowed').keypress(function() {
   
  var regex = new RegExp("^[0-9]");
  var key = String.fromCharCode(event.charCode ? event.which : event.charCode);
  if (!regex.test(key)) {
      event.preventDefault();
      return false;
   }
   
    if(this.value.length == 2){
        this.value = this.value+':';
     }
     
    if(this.value.length == 5){
        this.value = this.value+':00';
     }
     
     if(this.value.length > 7) {
            
        return false;
     
     }
});
    </script>
 </body>
</html>

Form.html

 <form id="myForm" onsubmit="handleFormSubmit(this)" autocomplete="off">
  <div class="form-group">
    <label for="client">Client</label>
    <input class="form-control form-control-sm" type="text" class="form-control" id="clint" name="client" placeholder="Client Name">
  </div>
  <div class="form-group">
    <label for="gender">Plan</label>
    <select class="form-control form-control-sm" id="plan" name="plan" required>
      <option value="" selected disabled>Choose...</option>
      <option value="00 hosting">00 hosting</option>
      <option value="01 slim">01 slim</option>
      <option value="02 basic">02 basic</option>
      <option value="10 special">10 special</option>
      <option value="99 coming up">99 coming up</option>
      
      
    </select>
  </div>
    <div class="form-group">
    <label for="last_name">Time Allowed</label>
    <input class="form-control form-control-sm" type="text" class="form-control" pattern="[0-9][0-9]:[0-9][0-9]:[0-9][0-9]" title ="00:00:00" id="timeAllowed" name="timeAllowed" placeholder="00:00:00">
  </div>
  <div class="form-group">
    <label for="email">Email</label>
    <input class="form-control form-control-sm" type="email" class="form-control" id="email" name="email">
  </div>
  <div class="form-group">
    <label for="website">Website</label>
    <input class="form-control form-control-sm" type="text" class="form-control" id="website" name="website">
  </div>
  
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

JavaScript.html

<script>
  // Prevent forms from submitting.
  function preventFormSubmit() {
    var forms = document.querySelectorAll('form');
    for (var i = 0; i < forms.length; i++) {
      forms[i].addEventListener('submit', function(event) {
      event.preventDefault();
      });
    }
    
  }
  window.addEventListener('load', preventFormSubmit);    
      
      
  function handleFormSubmit(formObject) {
    google.script.run.processForm(formObject);
    document.getElementById("myForm").reset();
  }
</script>
만에 하나

이것을 Webapp으로 추가해야하는데 문제가 해결 된 것 같습니다. 제안 해 주셔서 감사합니다!

//OPEN THE FORM IN SIDEBAR 
function showFormInSidebar() {      
  var form = HtmlService.createTemplateFromFile('test').evaluate().setTitle('New Client');
  SpreadsheetApp.getUi().showSidebar(form);
}


function doGet() {
  var form = HtmlService.createTemplateFromFile('Index').evaluate().setTitle('New Client');
  form.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
  return form;
}

test.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
  <center>
    <embed type="text/html" src="redacted"  width="290" height="800">
  </center>
  </body>
</html>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

onOpen은 소유자를 제외한 다른 사용자에게 실행되지 않습니다. 이 문제를 해결하는 방법? Google Script GAS

분류에서Dev

HTML 양식이 제출되지 않습니다. Material Desing 및 Javascript 사용

분류에서Dev

Google Apps Script를 사용하여 HTML 양식 제출시 메일 전송 트리거

분류에서Dev

Google Apps Script 및 JavaScript를 사용하여 HTML 양식 필드에 사용자 이메일을 자동으로 표시하는 방법

분류에서Dev

양식 용 Google Apps Script : 사용자에게 이메일로 특정 번호를 보내려고합니다.

분류에서Dev

HTML 양식 자동 완성 데이터 목록에 Google Apps Script Array 적용

분류에서Dev

Google Apps Script Execution API + Java를 사용하여 Google 양식을 만드는 방법은 무엇입니까?

분류에서Dev

사용자가 Google Apps Script로 데이터를 제출 한 후 적절한 HTML을 제공하는 방법

분류에서Dev

외부 양식을 html div에로드하고 유효성 검사를 통해 제출을 시도하지만 작동하지 않습니다.

분류에서Dev

특정 양식 제출에 의해 트리거되는 Google Apps Script OnSubmit 함수

분류에서Dev

Apps Script를 사용하여 Google 드라이브의 이미지를 Google 양식에 추가 할 수 없습니다.

분류에서Dev

Recaptcha로 제출하지 않는 양식은 Jquery Ajax를 사용하여 검증되었습니다.

분류에서Dev

Google Apps Script로 양식 제출 구문 분석

분류에서Dev

Google Apps Script가 템플릿에서 HTML 형식을 선택하지 않습니다.

분류에서Dev

함수는 정의되지 않은 것을 Google Apps Script에서 호출 된 함수로 전달합니다.

분류에서Dev

Google Apps Script를 사용하여 Google 양식에서 URL 매개 변수를 어떻게 얻습니까?

분류에서Dev

Google Apps Script에서 for를 사용하여 HTML 본문으로 메일 보내기

분류에서Dev

Google Apps Script : 수식에서 Var 사용?

분류에서Dev

jQuery 유효성 검사-무언가로 인해 양식이 제출되지 않습니다.

분류에서Dev

ng-repeat를 사용하고 HTML에서 함수를 호출 할 때 JSON 배열 값이 HTML 양식으로 전달되지 않습니다.

분류에서Dev

Twill로 웹 양식 제출이 적용되지 않습니까?

분류에서Dev

변경시 자동 업데이트되는 사용자 지정 Google 시트 기능은 다른 사용자가 편집해도 변경되지 않습니다.

분류에서Dev

양식 제출에 내 사용자 정의 확인란이 다음과 같이 표시되지 않습니다.

분류에서Dev

Jquery가 사용자 정의 버튼으로 양식을 제출하지 않습니다.

분류에서Dev

Excel은 사용자 양식으로 '시트 보호 / 보호 해제'를 초기화합니다.

분류에서Dev

양식은 사용자 프로필을 업데이트하지 않습니다.

분류에서Dev

Google Apps Script의 JDBC. 예외 : 시간 초과 또는 클라이언트 요청으로 인해 문이 취소되었습니다.

분류에서Dev

5 초 후 Google Apps Script UiApp을 자동으로 닫습니다.

분류에서Dev

HTML 양식 : 값 속성은 PHP로 전송되는 내용을 변경하지 않습니다.

Related 관련 기사

  1. 1

    onOpen은 소유자를 제외한 다른 사용자에게 실행되지 않습니다. 이 문제를 해결하는 방법? Google Script GAS

  2. 2

    HTML 양식이 제출되지 않습니다. Material Desing 및 Javascript 사용

  3. 3

    Google Apps Script를 사용하여 HTML 양식 제출시 메일 전송 트리거

  4. 4

    Google Apps Script 및 JavaScript를 사용하여 HTML 양식 필드에 사용자 이메일을 자동으로 표시하는 방법

  5. 5

    양식 용 Google Apps Script : 사용자에게 이메일로 특정 번호를 보내려고합니다.

  6. 6

    HTML 양식 자동 완성 데이터 목록에 Google Apps Script Array 적용

  7. 7

    Google Apps Script Execution API + Java를 사용하여 Google 양식을 만드는 방법은 무엇입니까?

  8. 8

    사용자가 Google Apps Script로 데이터를 제출 한 후 적절한 HTML을 제공하는 방법

  9. 9

    외부 양식을 html div에로드하고 유효성 검사를 통해 제출을 시도하지만 작동하지 않습니다.

  10. 10

    특정 양식 제출에 의해 트리거되는 Google Apps Script OnSubmit 함수

  11. 11

    Apps Script를 사용하여 Google 드라이브의 이미지를 Google 양식에 추가 할 수 없습니다.

  12. 12

    Recaptcha로 제출하지 않는 양식은 Jquery Ajax를 사용하여 검증되었습니다.

  13. 13

    Google Apps Script로 양식 제출 구문 분석

  14. 14

    Google Apps Script가 템플릿에서 HTML 형식을 선택하지 않습니다.

  15. 15

    함수는 정의되지 않은 것을 Google Apps Script에서 호출 된 함수로 전달합니다.

  16. 16

    Google Apps Script를 사용하여 Google 양식에서 URL 매개 변수를 어떻게 얻습니까?

  17. 17

    Google Apps Script에서 for를 사용하여 HTML 본문으로 메일 보내기

  18. 18

    Google Apps Script : 수식에서 Var 사용?

  19. 19

    jQuery 유효성 검사-무언가로 인해 양식이 제출되지 않습니다.

  20. 20

    ng-repeat를 사용하고 HTML에서 함수를 호출 할 때 JSON 배열 값이 HTML 양식으로 전달되지 않습니다.

  21. 21

    Twill로 웹 양식 제출이 적용되지 않습니까?

  22. 22

    변경시 자동 업데이트되는 사용자 지정 Google 시트 기능은 다른 사용자가 편집해도 변경되지 않습니다.

  23. 23

    양식 제출에 내 사용자 정의 확인란이 다음과 같이 표시되지 않습니다.

  24. 24

    Jquery가 사용자 정의 버튼으로 양식을 제출하지 않습니다.

  25. 25

    Excel은 사용자 양식으로 '시트 보호 / 보호 해제'를 초기화합니다.

  26. 26

    양식은 사용자 프로필을 업데이트하지 않습니다.

  27. 27

    Google Apps Script의 JDBC. 예외 : 시간 초과 또는 클라이언트 요청으로 인해 문이 취소되었습니다.

  28. 28

    5 초 후 Google Apps Script UiApp을 자동으로 닫습니다.

  29. 29

    HTML 양식 : 값 속성은 PHP로 전송되는 내용을 변경하지 않습니다.

뜨겁다태그

보관