Skip to content
조회 수 6715 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

구글 스프레드시트 ajax POST를 통한 기록 따라해보기

 

 

 

구글 스프레드시트를 데이터베이스로 이용하기 - 1. ajax POST를 통한 기록 편
을 읽고 한번 따라해 봤습니다.
 

 

 

1.  우선 시트1을 하나 만들고,

스프레드시트 ajax 기록-1.png

 

 

2. 메뉴의 도구 -> 스크립트 편집기를 선택합니다.

스프레드시트 ajax 기록-2.png

 

 

3. 빈프로젝트를 선택 -> 아래의 코드 입력 -> 디스켓모양 버튼을 눌러 스크립트를 저장 -> 실행-setup을 선택 -> 인증을 요청 -> 동의 -> 한번더 실행-setup을 선택  -> 게시-웹 앱으로 배포를 선택합니다.

 

* 파란색으로 표시한 시트1은 스프레드시트에서 ajax요청을 기록할 시트 이름입니다. 

//  1. Enter sheet name where data is to be written below

        var SHEET_NAME = "시트1";

         

//  2. Run > setup

//

//  3. Publish > Deploy as web app

//    - enter Project Version name and click 'Save New Version'

//    - set security level and enable service (most likely execute as 'me' and access 'anyone, even anonymously)

//

//  4. Copy the 'Current web app URL' and post this in your form/script action

//

//  5. Insert column names on your destination sheet matching the parameter names of the data you are passing in (exactly matching case)

 

var SCRIPT_PROP = PropertiesService.getScriptProperties(); // new property service

 

// If you don't want to expose either GET or POST methods you can comment out the appropriate function

function doGet(e){

  return handleResponse(e);

}

 

function doPost(e){

  return handleResponse(e);

}

 

function handleResponse(e) {

  // shortly after my original solution Google announced the LockService[1]

  // this prevents concurrent access overwritting data

  // [1] http://googleappsdeveloper.blogspot.co.uk/2011/10/concurrency-and-google-apps-script.html

  // we want a public lock, one that locks for all invocations

  var lock = LockService.getPublicLock();

  lock.waitLock(30000);  // wait 30 seconds before conceding defeat.

   

  try {

    // next set where we write the data - you could write to multiple/alternate destinations

    var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));

    var sheet = doc.getSheetByName(SHEET_NAME);

     

    // we'll assume header is in row 1 but you can override with header_row in GET/POST data

    var headRow = e.parameter.header_row || 1;

    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];

    var nextRow = sheet.getLastRow()+1; // get next row

    var row = [];

    // loop through the header columns

    for (i in headers){

      if (headers[i] == "Timestamp"){ // special case if you include a 'Timestamp' column

        row.push(new Date());

      } else { // else use header name to get data

        row.push(e.parameter[headers[i]]);

      }

    }

    // more efficient to set values as [][] array than individually

    sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);

    // return json success results

    return ContentService

          .createTextOutput(JSON.stringify({"result":"success", "row": nextRow}))

          .setMimeType(ContentService.MimeType.JSON);

  } catch(e){

    // if error return this

    return ContentService

          .createTextOutput(JSON.stringify({"result":"error", "error": e}))

          .setMimeType(ContentService.MimeType.JSON);

  } finally { //release lock

    lock.releaseLock();

  }

}

 

function setup() {

    var doc = SpreadsheetApp.getActiveSpreadsheet();

    SCRIPT_PROP.setProperty("key", doc.getId());

}

 

이제 위에서 복사해둔 웹 앱 URL을 통해 ajax GET/POST 요청을 보낼 수 있습니다.

ajax명령어를 사용하려면 skin.html에 jQuery스크립트를 포함해야합니다.

예)<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

 

 

url은 복사해둔 웹앱 URL을 사용하면 됩니다.

 

다음은 ajax 예제입니다.

$.ajax({

  url: "웹앱URL",

  data: {A:"a", B:"b"},

  type: "POST"

});

중요 : (스프레드시트에는 미리 첫번째 행에 A가 기록된 열과 B가 기록된 열이 존재해야 a, b가 기록됩니다.)

 

 


 

 

 

스프레드시트 ajax 기록-3.png

 

위의 이미지에 나오는 게시할 수 있는 웹앱URL을 복사후 test.html 파일을 만들때 웹앱URL을 수정합니다.

 

<!DOCTYPE html>

<html lang="ko">

    <head>

        <meta charset="utf-8">

        <title>Ajax upload example</title>

 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

 

<script type="text/javascript">

$.ajax({

  url: "웹앱URL",

  data: {A:"a", B:"f"},

  type: "POST"

});

 

</script>

 

 

테스트 해보면 잘 될 껍니다. 

근데 수정은 어떻게 하지?

 

 

5표 투표거부

API, GmailApp 및 MailApp 모두 고급 옵션을 통해 HTML 본문을 보낼 수 있습니다. 아래 코드를 사용하여 HTML 형식의 텍스트를 둘 다 보낼 수있었습니다.

암호

// global var 
var html =  
    '<body>' + 
      '<h2> Test </h2><br />' +
        '<p> Greetings Earthling </p>' +
    '</body>'    

function testGmailApp() {  
  GmailApp.sendEmail(
    'your@emailaddress.com',         // recipient
    'test GmailApp',                 // subject 
    'test', {                        // body
      htmlBody: html                 // advanced options
    }
  ); 
}

function testMailApp() {
  MailApp.sendEmail(
    'your@emailaddress.com',         // recipient
    'test MailApp',                  // subject 
    'test', {                        // body
      htmlBody: html                 // advanced options
    }
  ); 
}

 

 

#구글 #스프레드시트 #ajax #POST

로그인 후 댓글쓰기가 가능합니다.

?

  1. 02
    Dec 2015
    00:31

    추억의 3039 서울지방경찰 기동대

    Category일상 Views3549
    Read More
  2. 01
    Dec 2015
    08:36

    555 TIMER AM TRANSMITTER CIRCUIT(AM 송신 회로)

    Category회로도전자부품 Views3698
    Read More
  3. 01
    Dec 2015
    03:48

    안드로이드 플래시 동영상이 안될때 해결방법 [200, Stream not found, NetStream.Play.StreamNotFound, clip: '[Clip] ...Progress]

    Category컴퓨터잡담 Views3903
    Read More
  4. 27
    Nov 2015
    01:52

    Windows APM Install(Apache 2.4, PHP 6.0, Mysql) 최신버전 설치해보기

    CategoryServer Views1250
    Read More
  5. 18
    Nov 2015
    02:24

    Google 문서도구를 컴퓨터에 동기화

    Category[Docs]스프레드시트 Views4381
    Read More
  6. 12
    Nov 2015
    02:53

    DOS Batch - FTP Scripts 배치파일

    CategoryWindowsTip Views5740
    Read More
  7. 05
    Oct 2015
    02:16

    UTP Unshielded Twisted-Pair Wire CAT5와 CAT5e 차이점

    Category회로도전자부품 Views3071
    Read More
  8. 21
    Sep 2015
    23:32

    Transistor VS Mosfet 비교

    Category회로도전자부품 Views1013
    Read More
  9. 22
    Jul 2015
    14:20

    PHP5.4.4 form 변수 전달받기(get, post방식)

    CategoryHTMLPHPMSQL Views8358
    Read More
  10. 13
    Jul 2015
    23:23

    파일 업로드 폴더 변경

    CategoryServer Views1960
    Read More
  11. 09
    Jul 2015
    07:58

    구글드라이브 API

    Category[Docs]스프레드시트 Views4549
    Read More
  12. 03
    Jul 2015
    22:10

    CCTV

    Category회로도전자부품 Views1181
    Read More
  13. 20
    May 2015
    08:51

    간단한 커패시터 스폿 용접기

    Category회로도전자부품 Views5352
    Read More
  14. 20
    May 2015
    08:30

    릴레이 SSR에 대한 설명

    Category회로도전자부품 Views1107
    Read More
  15. 18
    May 2015
    17:22

    디지털스트림 DHT235K

    Views515
    Read More
  16. 12
    May 2015
    18:45

    카카오 API

    Views981
    Read More
  17. 12
    May 2015
    18:41

    키움 api

    Category주식 Views3891
    Read More
  18. 26
    Mar 2015
    23:16

    농업인으로서의 인정을 받는 농업경영체 등록

    Category유용한상식 Views1431
    Read More
  19. 18
    Mar 2015
    09:11

    자바 애플릿 예제

    Category자바(JAVA) Views5680
    Read More
  20. 02
    Mar 2015
    08:35

    윈도우용 FTP 프로그램 WinSCP

    CategoryWindowsTip Views2144
    Read More
Board Pagination Prev 1 ... 4 5 6 7 8 ... 16 Next
/ 16

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소