웹 앱을 통해 Excel을 Google 스프레드 시트로 가져 오는 방법

피모

Excel 파일을 가져 와서 Google 시트로 전달하는 웹 앱을 만들려고합니다. 아이디어는 다른 사람들이 웹 앱을 통해 자신의 테이블 (형식이 동일 함)을 내 스프레드 시트에 업로드하여 나머지 작업을 수행한다는 것입니다.

지금 나는 이것을 얻었다 :

js 코드;

    function doGet(e) {
 
  Logger.log(e.parameter);
  return HtmlService.createHtmlOutputFromFile("index");
     
}

function toroku(userInfo){

 var url = "https://docs.google.com/spreadsheets/d/1gCMXhBTba-8PNeN5lk5wrumUGe_f4xNdip1DPCpaRSw/edit#gid=0";
 var ss = SpreadsheetApp.openByUrl(url);
  var ws = ss.getSheetByName("upload");
 
  ws.appendRow([userInfo.table]);
        
 }

그리고 html;

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script>
<script>
    var ExcelToJSON = function() {

      this.parseExcel = function(file) {
        var reader = new FileReader();

        reader.onload = function(e) {
          var data = e.target.result;
          var workbook = XLSX.read(data, {
            type: 'binary'
          });
          workbook.SheetNames.forEach(function(sheetName) {
            // Here is your object
            var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
            var json_object = JSON.stringify(XL_row_object);
            console.log(JSON.parse(json_object));
            jQuery( '#xlx_json' ).val( json_object );
          })
        };

        reader.onerror = function(ex) {
          console.log(ex);
        };

        reader.readAsBinaryString(file);
      };
  };

  function handleFileSelect(evt) {
    
    var files = evt.target.files; // FileList object
    var xl2json = new ExcelToJSON();
    xl2json.parseExcel(files[0]);
  }


 
</script>

<form enctype="multipart/form-data">
    <input id="upload" type=file  name="files[]">
</form>

    <textarea class="form-control" rows=35 cols=120 id="xlx_json"></textarea>

    <script>
        document.getElementById('upload').addEventListener('change', handleFileSelect, false);
        document.getElementById('upload').addEventListener('click', handleFileSelect).value
        
        google.script.run.toroku(handleFileSelect);
        document.getElementById("upload").value = "";

    </script>
    
    <div class="form-row">
    <button id="btn">登録!</button>
    </div>
   
    <script>
   
    document.getElementById("btn").addEventListener("click",doStuff);
   
    function doStuff(){
   
    var userInfo = {};
   
   
    userInfo.table = document.getElementById("xlx_json").value;

    
     google.script.run.toroku(userInfo);
    document.getElementById("xlx_json").value = "";

   
    }
   
    </script>
    
  </body>
</html>

Excel에서 데이터를 읽고 Google 시트로 가져 오지만 테이블이 아닌 배열을 얻습니다.

이것은 내가 Google 시트로 가져 오는 것입니다.

[{"Product":"2132030501430 ","Customer":"A","Units":"1","Deliver":"1"},{"Product":"2188130546030 ","Customer":"B","Units":"2","Deliver":"3"},{"Product":"2132650259800 ","Customer":"A","Units":"1","Deliver":"5"},{"Product":"2138512138000 ","Customer":"B","Units":"0","Deliver":"6"},{"Product":"2132032500270 ","Customer":"A","Units":"-10","Deliver":"7"},{"Product":"2116104013159 ","Customer":"B","Units":"200","Deliver":"8"},{"Product":"2116102039910 ","Customer":"A","Deliver":"9"},{"Product":"2145710030310 ","Customer":"B","Deliver":"10"},{"Product":"2132630164760 ","Customer":"A","Deliver":"9"},{"Product":"2116105051990 ","Customer":"B","Units":"0","Deliver":"5"},{"Product":"2145721006510 ","Customer":"A","Units":"0","Deliver":"4"},{"Product":"2132030900430 ","Customer":"B","Units":"7","Deliver":"3"},{"Product":"2132031500270 ","Customer":"A","Units":"5","Deliver":"2"},{"Product":"2138506049100 ","Customer":"B","Units":"6","Deliver":"1"},{"Product":"2132042501730 ","Customer":"C","Units":"31","Deliver":"9"},{"Product":"2132030901470 ","Customer":"D","Units":"20","Deliver":"8"},{"Product":"2116101050089 ","Customer":"F","Units":"126","Deliver":"7"},{"Product":"2116104051870 ","Customer":"C","Units":"3","Deliver":"6"},{"Product":"2188131528030 ","Customer":"D","Units":"82","Deliver":"4"},{"Product":"2145718013050 ","Customer":"F","Deliver":"4"},{"Product":"2188140578030 ","Customer":"C","Units":"20","Deliver":"4"},{"Product":"2132640087170 ","Customer":"D","Deliver":"4"},{"Product":"2138506026000 ","Customer":"F","Units":"0","Deliver":"4"},{"Product":"2132042501770 ","Customer":"C","Units":"15","Deliver":"4"},{"Product":"2187106025940 ","Customer":"D","Units":"90","Deliver":"4"}]

내 질문은 어떻게 그것을 테이블로 변환 할 수 있습니까? html 쪽에서해야합니까? 또한 저는 프로그래밍 세계의 초보자라고 말하고 싶습니다. 이걸로 무엇을해야하는지 가장 간단한 방법으로 알려주세요.

친애하는!

Tanaike

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

  • 로컬 PC에서 XLSX 파일을 선택하면 XLSX 데이터를 검색하고 textareaJavascript 및 xlsx.js.
  • 하단 버튼을 클릭하면 값 textarea을 Google Apps Script 측으로 보내고 값을 Google 스프레드 시트에 넣기를 원합니다.
  • 에서 Excel file has only one sheet with one simple tableXLSX 데이터에 시트가 하나만 있다는 것을 이해했습니다.

수정 지점 :

  • 스크립트에서 XLSX 데이터에 여러 시트가있는 경우 마지막 시트의 값만 Google Apps Script로 전송됩니다. 다른 시트의 값은 workbook.SheetNames.forEach().
    • 그러나 귀하의 회신에서 XLSX 데이터에 시트가 하나만 있다고 가정하는 것을 이해할 수 있습니다. 따라서이 경우 스크립트가 더 간단 해집니다.
  • 스크립트에서 오류가 발생합니다 document.getElementById('upload').addEventListener('click', handleFileSelect).value.
  • 스프레드 시트에 값을 입력하기 위해 setValues대신 을 사용하도록 제안하고 싶습니다 appendRow. setValues를 사용 하면 한 번의 호출로 여러 행과 열의 값을 넣을 수 있습니다.
    • 이 경우 값은 2 차원 배열이어야합니다.

위의 사항이 스크립트에 반영되면 다음과 같이됩니다.

수정 된 스크립트 :

Google Apps Script 측 :

function doGet(e) {
  Logger.log(e.parameter);
  return HtmlService.createHtmlOutputFromFile("index");
}

function toroku(userInfo){
  var values = JSON.parse(userInfo.table);
  var url = "https://docs.google.com/spreadsheets/d/1gCMXhBTba-8PNeN5lk5wrumUGe_f4xNdip1DPCpaRSw/edit#gid=0";
  var ss = SpreadsheetApp.openByUrl(url);
  var ws = ss.getSheetByName("upload");
  ws.getRange(ws.getLastRow() + 1, 1, values.length, values[0].length).setValues(values);
}

HTML 및 자바 스크립트 쪽 :

<!DOCTYPE html>
<html>

<head>
  <base target="_top">
</head>

<body>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/jszip.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.js"></script>
  <form enctype="multipart/form-data">
    <input id="upload" type=file name="files[]">
  </form>
  <textarea class="form-control" rows=35 cols=120 id="xlx_json"></textarea>
  <div class="form-row">
    <button id="btn">登録!</button>
  </div>

  <script>
    document.getElementById('upload').addEventListener('change', handleFileSelect, false);
    document.getElementById("btn").addEventListener("click", doStuff);
  
    var ExcelToJSON = function() {
      this.parseExcel = function(file) {
        var reader = new FileReader();
        reader.onload = function(e) {
          var data = e.target.result;
          var workbook = XLSX.read(data, {type: 'binary'});
          jQuery('#xlx_json').val(JSON.stringify(XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {header: 1})));
        };
        reader.onerror = function(ex) {
          console.log(ex);
        };
        reader.readAsBinaryString(file);
      };
    };

    function handleFileSelect(evt) {
      var files = evt.target.files; // FileList object
      var xl2json = new ExcelToJSON();
      xl2json.parseExcel(files[0]);
    }

    function doStuff() {
      var userInfo = {};
      userInfo.table = document.getElementById("xlx_json").value;
      google.script.run.toroku(userInfo);
      document.getElementById("xlx_json").value = "";
    }
  </script>
</body>
</html>

노트 :

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

참조 :

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Google 스프레드 시트에 포함 된 Google Apps 스크립트 프로젝트로 소스 파일을 가져 오는 방법

분류에서Dev

셀 값을 복사하여 스크립트 (Google 스프레드 시트)를 통해 다른 스프레드 시트로 보내는 더 빠른 방법

분류에서Dev

URL을 통해 웹 사이트에서 데이터를 가져 오는 방법

분류에서Dev

Google 스프레드 시트 사이드 바 입력을 서버에 가져 오는 방법

분류에서Dev

Google 스프레드 시트 importxml : XML에서 요소 노드의 모든 이름을 가져 오는 방법

분류에서Dev

Google 스프레드 시트-Wikipedia에서 특정 테이블을 가져 오는 방법은 무엇입니까?

분류에서Dev

Google 스프레드 시트 : ImportXML을 사용하여 웹 사이트에서 번호 가져 오기

분류에서Dev

React에서 Google Sheets API를 사용하여 스프레드 시트의 시트 목록을 동적으로 가져 오는 방법은 무엇입니까?

분류에서Dev

VBA를 사용하여 Google 스프레드 시트에서 Excel로 데이터를 가져 오는 방법

분류에서Dev

MVC 응용 프로그램을 통해 스프레드 시트 데이터를 SQL 데이터베이스로 가져옵니다. 가져 오는 동안 스프레드 시트에없는 열에 대한 값을 할당하는 방법이 있습니까?

분류에서Dev

값을 가져올 때 시트에 날짜 스탬프를 자동으로 추가하는 Google 스프레드 시트 / 앱 스크립트

분류에서Dev

Microsoft Graph : 웹앱을 통해 조직 사용자로부터 데이터를 가져 오는 방법은 무엇입니까?

분류에서Dev

Java에서 웹 스크래핑을 통해 여러 HTML 테이블의 데이터를 가져 오는 방법

분류에서Dev

스크립트 태그를 통해 가져 오기와 웹팩을 통해 가져 오기

분류에서Dev

Google 스프레드 시트에서 importhtml을 사용하여 동일한 스프레드 시트에서 여러 URL의 테이블을 연속적으로 가져 오는 방법은 무엇입니까?

분류에서Dev

Google 스프레드 시트에서 = filter에 "또는"을 추가하는 방법

분류에서Dev

행이 Google 스프레드 시트의 필터에 의해 숨겨 지거나 숨겨지지 않은 경우 마지막으로 보이는 행을 가져 오는 방법은 무엇입니까?

분류에서Dev

스프레드 시트에서 값을 가져와 웹 서비스를 호출하는 Excel 플러그인

분류에서Dev

vue 웹 사이트에서 Google appscript로 배열 개체 매개 변수를 전달하여 Google 스프레드 시트 열 값을 설정하는 방법

분류에서Dev

Google 스프레드 시트에서 IF 문을 만드는 방법

분류에서Dev

Excel을 Google 문서 스프레드 시트와 동기화하는 방법

분류에서Dev

웹팩을 통해 웹 어셈블리 패키지를 가져 오는 방법 이해하기

분류에서Dev

역 지오 코딩 (Google Maps API)을 통해 거리 / 도로 좌표 만 가져 오는 방법

분류에서Dev

Google 스프레드 시트에서 연 Excel 파일을 다운로드하는 방법은 무엇입니까?

분류에서Dev

Google 스프레드 시트의 여러 기준에 따라 다른 셀에서 동적 값을 일치 시키거나 가져 오는 방법

분류에서Dev

웹앱을 통해 SpreadSheetApp ID 가져 오기

분류에서Dev

웹앱을 통해 SpreadSheetApp ID 가져 오기

분류에서Dev

웹 스크랩을 통해 ajax로 만든 그래프에서 텍스트 가져 오기

분류에서Dev

Google 스프레드 시트에서 IMPORTXML 및 Xpath를 사용하여 <img src> URL을 가져 오는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Google 스프레드 시트에 포함 된 Google Apps 스크립트 프로젝트로 소스 파일을 가져 오는 방법

  2. 2

    셀 값을 복사하여 스크립트 (Google 스프레드 시트)를 통해 다른 스프레드 시트로 보내는 더 빠른 방법

  3. 3

    URL을 통해 웹 사이트에서 데이터를 가져 오는 방법

  4. 4

    Google 스프레드 시트 사이드 바 입력을 서버에 가져 오는 방법

  5. 5

    Google 스프레드 시트 importxml : XML에서 요소 노드의 모든 이름을 가져 오는 방법

  6. 6

    Google 스프레드 시트-Wikipedia에서 특정 테이블을 가져 오는 방법은 무엇입니까?

  7. 7

    Google 스프레드 시트 : ImportXML을 사용하여 웹 사이트에서 번호 가져 오기

  8. 8

    React에서 Google Sheets API를 사용하여 스프레드 시트의 시트 목록을 동적으로 가져 오는 방법은 무엇입니까?

  9. 9

    VBA를 사용하여 Google 스프레드 시트에서 Excel로 데이터를 가져 오는 방법

  10. 10

    MVC 응용 프로그램을 통해 스프레드 시트 데이터를 SQL 데이터베이스로 가져옵니다. 가져 오는 동안 스프레드 시트에없는 열에 대한 값을 할당하는 방법이 있습니까?

  11. 11

    값을 가져올 때 시트에 날짜 스탬프를 자동으로 추가하는 Google 스프레드 시트 / 앱 스크립트

  12. 12

    Microsoft Graph : 웹앱을 통해 조직 사용자로부터 데이터를 가져 오는 방법은 무엇입니까?

  13. 13

    Java에서 웹 스크래핑을 통해 여러 HTML 테이블의 데이터를 가져 오는 방법

  14. 14

    스크립트 태그를 통해 가져 오기와 웹팩을 통해 가져 오기

  15. 15

    Google 스프레드 시트에서 importhtml을 사용하여 동일한 스프레드 시트에서 여러 URL의 테이블을 연속적으로 가져 오는 방법은 무엇입니까?

  16. 16

    Google 스프레드 시트에서 = filter에 "또는"을 추가하는 방법

  17. 17

    행이 Google 스프레드 시트의 필터에 의해 숨겨 지거나 숨겨지지 않은 경우 마지막으로 보이는 행을 가져 오는 방법은 무엇입니까?

  18. 18

    스프레드 시트에서 값을 가져와 웹 서비스를 호출하는 Excel 플러그인

  19. 19

    vue 웹 사이트에서 Google appscript로 배열 개체 매개 변수를 전달하여 Google 스프레드 시트 열 값을 설정하는 방법

  20. 20

    Google 스프레드 시트에서 IF 문을 만드는 방법

  21. 21

    Excel을 Google 문서 스프레드 시트와 동기화하는 방법

  22. 22

    웹팩을 통해 웹 어셈블리 패키지를 가져 오는 방법 이해하기

  23. 23

    역 지오 코딩 (Google Maps API)을 통해 거리 / 도로 좌표 만 가져 오는 방법

  24. 24

    Google 스프레드 시트에서 연 Excel 파일을 다운로드하는 방법은 무엇입니까?

  25. 25

    Google 스프레드 시트의 여러 기준에 따라 다른 셀에서 동적 값을 일치 시키거나 가져 오는 방법

  26. 26

    웹앱을 통해 SpreadSheetApp ID 가져 오기

  27. 27

    웹앱을 통해 SpreadSheetApp ID 가져 오기

  28. 28

    웹 스크랩을 통해 ajax로 만든 그래프에서 텍스트 가져 오기

  29. 29

    Google 스프레드 시트에서 IMPORTXML 및 Xpath를 사용하여 <img src> URL을 가져 오는 방법은 무엇입니까?

뜨겁다태그

보관