티스토리 뷰
글을 작성한지 오래 지난 포스팅의 경우 지금과 다른 점이 생길 수 있습니다.
블로그에 글이 조금밖에 없는경우에는 직접 살펴볼수도 있지만 100개만 넘어가도 힘든일인데요.
어떻게 해야 할까 생각하다 정말 좋은 방법이 있어 알려드리려고 합니다.
먼저 이 글은 뭐하라님의 http://nubiz.tistory.com/551 글을 바탕으로 작성된 것임을 말씀드립니다.
완성된 스크린샷 살펴보기
직접 적용한 스크린샷을 확인해보겠습니다.
마땅히 넣을 자리가 없어서 댓글 달기 버튼 옆에 넣어주었습니다.
저 상자를 클릭하게 되면 아래 스크린샷 처럼 스르르 열리며 제보가 가능합니다.
제가 적용한 소스는 뭐하라님의 원본 소스를 조금 수정한 것이며, 혼란을 드리지 않기 위해서 이 글은 뭐하라님의 원본 글로 진행했습니다.
구글 스프레드 시트 만들고 활성화 하기
블로그에서 대부분이 DB로 이루어져 있다고 해도 과언이 아닌데요.
티스토리도 글, 댓글, 방명록등등이 티스토리만의 DB에 저장될 것입니다.
이 티스토리 DB는 우리들이 임의로 건들수가 없습니다.
그래서 방문자가 오류를 제보하면 그것을 저장해주는 저장소가 필요합니다.
이때 구글 스프레드시트를 데이터 저장 용도로 사용할 예정입니다.
구글 드라이브(클릭)에 접속하셔서 새로 만들기 - Google 스프레드시트를 선택해주세요.
또는 바로 구글 스프레드시트(클릭)에서 새로 만들기 해주세요.
새로 만들어졌습니다.
"제목 없는 스프레드시트"는 나중에 원하시는대로 바꿔주세요.
초록색 박스로 둘러싼 "시트1"은 아래에서 중요합니다.
원하는대로 수정하셔도 되지만, 수정한 다음에는 꼭 기억하세요.
A1부터 C1까지를 각각 Timestamp, path, memo로 체워주세요.
그다음에 도구 - 스트립트 편집기를 눌러주세요.
그러면 아래와 같은 창이 뜹니다.
스크립트 만들기 - 빈 프로젝트를 선택해주세요.
그럼 아래와 같은 모습이 나타납니다.
저기있는 function myFunction() { } 을 모두 지우고 아래 내용을 복사해서 넣어주세요.
// 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());
}
맨위에 있는 시트1은 오류를 기록할 시트의 이름입니다.
위에서 수정하셨다면 이것도 바꿔주세요.
다 하셨다면 저장해주세요.
이름은 마음대로.. ㅎㅎ..
실행 - Setup을 눌러주세요.
인증이 필요하다고 나옵니다.
인증해주세요.
동의 하신다음에 다시한 번 실행 - Setup 해주시면 됩니다.
마지막으로 게시 - 웹 앱으로 배포...을 눌러주세요.
프로젝트 버전 옆 새 버전 저장을 눌러주세요.
앱을 실행할 사용자는 '나'
웹에 액세스할 수 있는 사용자는 누구나(익명 사용자 포함)으로 꼭 바꿔주세요.
자 이제 구글 스프레드 시트는 끝났습니다.
현재 웹 앱 URL을 복사해주세요 좀 있다가 필요합니다.
이어서 티스토리에 관련 소스를 넣어봅시다.
티스토리 html/css 수정하기
이제 마지막 작업으로 html과 css만 수정해주시면 적용이 완료됩니다.
오류 제보 버튼 html 소스를 넣고 싶으신 위치에 넣어주시면 됩니다.
<div id="sendComment">
<p>오류 제보하기</p>
<div>
<input type="checkbox" value="내용상 오류가 있음"/>내용상 오류가 있음<br/>
<input type="checkbox" value="표시에 문제가 있음"/>표시에 문제가 있음<br/>
<input type="checkbox" value="기타 수정이 필요함"/>기타 수정이 필요함<br/>
<textarea placeholder="구체적 내용이나 기타 의견을 남겨주세요."></textarea><br/>
<input type="button" value="보내기" onclick="sendComment();">
<a href="http://nubiz.tistory.com/551">(?)</a>
</div>
</div>
<div style="clear:both" />
그다음 skin.html의 </body>부분에 아래 코드를 넣어주시되, 하늘색으로 표시한 부분에는 위에서 복사한 URL을 넣어주세요.
참고로 맨 위의 첫 줄은 jquery입니다.
이미 jquery가 적용된 블로그의 경우 맨 윗 줄은 생략하셔야 합니다.
<script>window.jQuery||document.write('<script src="http://s1.daumcdn.net/svc/original/U03/cssjs/jquery/jquery-1.11.0.min.js"><\/script>');</script>
<script>
//오류제보하기 - http://nubiz.tistory.com/551
$("#sendComment>p").click(function(){
$("#sendComment>div").toggle(300);
});
function sendComment (){
$("#sendComment *").attr("disabled","");
var errors = []
$("#sendComment :checkbox:checked").each(function(i){
errors[i] = $(this).val();
});
var comment = $("#sendComment textarea").val();
$.ajax({
url: "https://script.google.com/macros/s/###############################/exec",
data: {
path: decodeURIComponent(location.pathname),
memo: errors+" / "+comment
},
type: "POST",
success:function(){
alert("빠른 시일 내에 검토해보겠습니다.\n감사합니다.");
$("#sendComment :disabled").removeAttr("disabled");
$("#sendComment textarea").val('');
$("#sendComment :checkbox").prop("checked",false);
}
});
}
</script>
마지막으로 style.css에 아래 코드를 넣어주세요.
#sendComment {
width:140px;
background:#eee;
padding:10px;
border:#999 solid 1px;
font-size:0.8em;
float:right;
}
#sendComment p {
line-height:2em;
padding:0; margin:0;
}
#sendComment div {
display:none;
}
#sendComment a {
text-decoration:none;
color:#aaa;
margin-left:65px;
}
그러면 모든 작업이 끝납니다.
어떻게 기록되나요?
어떻게 기록되는지 궁금해하실까봐 스샷을 하나 더 준비했습니다.
https://docs.google.com/spreadsheets/d/1BkK9_Yozyrzbbv4OVBFjdUCZw7SdYDPERDUs1uCpkgs/pubhtml
테스트 해보고 싶으신 분께서는 이 글에 하셔도 좋지만 꼭 테스트라고 말씀해주세요.. ㅎㅎ
참조
'Tistory' 카테고리의 다른 글
pre 태그만 있는 과거 게시글도 Highlight.js 적용하기 (0) | 2020.11.24 |
---|---|
티스토리 #1 게시글 썸네일 표시해보기 (2) | 2016.02.27 |
애드센스 수익금을 받았어요! (4) | 2015.02.25 |
티스토리 댓글 탭 모양 바꾸기 (3) | 2015.02.01 |
티스토리 댓글에 더보기 기능 추가하기 (2) | 2014.11.07 |
구글 애드센스(Adsense) 핀번호가 도착했습니다 (3) | 2014.09.29 |
티스토리 댓글, 디스커스를 탭으로 변경하였습니다~ (7) | 2014.09.14 |
HTML CSS 소스 파일 한줄로 만들기 (1) | 2014.07.31 |
- Total
- Today
- Yesterday
- String Name = Miru(itmir913);
- String Mail = itmir913@gmail.com;
- String github = https://github.com/itmir913;