๊ตฌ๊ธ์คํ๋ ๋์ํธ ํ์ผ์ ๋ณธ์ธ PC ํน์ ํด๋์ ์ ์ฅํ๊ณ ์ถ๋ค๋ ๋ฌธ์๊ฐ ๋ค์ด์ ์ด์ฌํ ์๊ฐํด๋ดค์ง๋ง ์ด๋ ค์ ์ฝ๊ฐ ํธ๋ฒ์ผ๋ก ๋ง๋ค์ด๋ดค๋ค. ์กฐ๊ฑด์ด ์๋๋ ๊ตฌ๊ธ์คํ๋ ๋์ํธ์ ์์ฑ๋ ํ๊น์ง๋ง ๋์ค๊ฒ ํด๋ฌ๋ผ๊ณ ํ์์ง๋ง ์ฐ์ ๋ด ์ ์์๋ ๋ถ๊ฐ๋ฅํ์๋ค.
์๋๋ ๋ค์ด๋ฐ๋ ์คํ๋ ๋์ํธ ํ์ผ์ ๋ช ์ ์คํ๋๋ ๋ ์ง๋ฅผ ๋ถ์ฌ์ ๋ค๋ฅด๊ฒ ํ๊ณ , ํด๋น ํ์ผ์ ํน์ ํด๋๋ก ์ด๋์ํค๋ ๋ฐฉ๋ฒ์ด๋ค.
1. google apps script ์์ค (code.js)
function doGet(e){
return createDataUrl();
}
function createDataUrl() {
var type = "xlsx";
var date = Utilities.formatDate(new Date(),"GMT+0900","yyyy-MM-dd HH:mm:ss");
date = date.replaceAll("-","");
date = date.substring(0,9);
const mimeTypes = { xlsx: MimeType.MICROSOFT_EXCEL};
const ss = SpreadsheetApp.getActiveSpreadsheet();
const url = `https://docs.google.com/spreadsheets/export?exportFormat=${type}&id=์คํ๋ ๋์ํธID์
๋ ฅ`;
var blob = UrlFetchApp.fetch(url, {
headers: { authorization: `Bearer ${ScriptApp.getOAuthToken()}` },
}).getBlob();
var html = HtmlService.createTemplate('<body></body><script>const a=document.createElement("a");document.body.appendChild(a),a.download="<?= filename ?>",a.href="<?= data ?>",a.click();</script>');
html.data = "data:${mimeTypes[type]};base64," + Utilities.base64Encode(blob.getBytes());
html.filename = `${ss.getName() + String(date)}.${type}`;
return html.evaluate();
}
๋ง์ฝ ์ ์์ค์์ ํ์ผ๋ช ์ ๋์ผํ๊ฒ ํญ์ ๋ค์ด ๋ฐ๊ณ ์ถ์ ๊ฒฝ์ฐ date ๋ถ๋ถ์ ๋ค ์ง์์ฃผ๊ณ ํ์ผ์ด๋ฆ ์ค์ ํ ๋ถ๋ถ ์์ค๋ฅผ ์๋์ ๊ฐ์ด ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
html.filename = "๋์ผํ์ด๋ฆ.xlsx";
2. html ํ์ผ ๋ง๋ค๊ธฐ (Index.html)
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
</body>
</html>
์ ์คํ๋๋ ์ก์ ์ ํ๊ธฐ ์ํด์ ์์๋ก ๋ง๋ค์ด์ฃผ๋ html ์ ๋๋ก ํด์ํ๋ค. (์น์ฑ์์ ์คํ)
3. ์น ์ฑ์ผ๋ก ๋ฐฐํฌ ํ๊ธฐ
์ค๋ฅธ์ชฝ ์๋จ์ ์๋ ๋ฐฐํฌ > ์ ๋ฐฐํฌ ๋ฒํผ์ ๋๋ฅธ๋ค.
๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ด ์น ์ฑ์ ์ก์ธ์คํ๋ ์ฌ์ฉ์ / ๊ตฌ๊ธ ๊ณ์ ์ด ์๋ ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ์ ํํ๊ณ ๋ฐฐํฌ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์๋์ ๊ฐ์ URL์ด ์์ฑ๋๋ค. ์์ฑ๋ URL์ ๋ณต์ฌํ์ฌ ์๋ ์คํฌ๋ฆฝํธ์ ์ฌ์ฉํ๋ค.
4. ์๋์ฐ PC์ ํ์ผ ์ด๋ํ๋ ์คํฌ๋ฆฝํธ ํ์ผ ๋ง๋ค์ด ์ค์ผ์ค ์์ฝํ๊ธฐ
์ฌ์ ์ ์๋ ๋งํฌ๋ฅผ ๋ณด๋ฉด .bat ํ์ผ ๋ง๋๋ ๋ฐฉ๋ฒ ๋ฐ ์์ ์ค์ผ์ค๋ฌ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ์์ ํธ๋ฆฌ๊ฑฐ ์คํ ์๊ฐ๊ณผ ๋ง์ถฐ ์ดํ ์๊ฐ๋๋ก ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
๋ฐฐ์น ํ์ผ ์์ค (.bat)
@echo off
::์นํ์ด์ง ์คํ
start "์์์ ๋ณต์ฌํ ์น ์ฑ URL"
:: ํ์ผ ๋ค์ด์ ํ์ํ ์๊ฐ์ผ๋ก ์ค์ ํด์ฃผ๋ ๊ฒ์ด ์ข์ (๋๋ํ๊ฒ)
timeout 10
::ํ์ผ๋ช
์ ๋ ์ง๊ตฌ๋ถ์ ์ํ
SET yyyymmdd=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
REM SET yyyymmdd=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%
:: FILENAME
SET filePath=C:\excelFileTest%yyyymmdd%.xlsx
echo %filePath% ํ์ผ ์ด๋
:: file ํด๋ ์ด๋ (์์ด ๋ค์ด๋ฐ์ ํด๋, ๋ค๊ฐ ์ฎ๊ธธ ํด๋)
move %filePath% C:\test
::KEY ์ข
๋ฃ, pause ์ผ ๊ฒฝ์ฐ ๋์ค ์ฐฝ์ด ๋จ์ผ๋ฏ๋ก ์ ์์ ์ผ๋ก ์คํ์ด ๋๋๊ฒ ํ์ธ์ด ๋๋ค๋ฉด exit
pause
๊ตฌ๊ธ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๋งํผ, ๊ผญ ์ธํฐ๋ท ๊ธฐ๋ณธ ์ฑ ์ค์ ์ chrome์ผ๋ก ์ค์ ๋์ด ์์ด์ผ ํ๋ฉฐ ๋ณธ์ธ id๊ฐ ๋ก๊ทธ์ธ ๋์ด์์ด์ผ ํ๋ค. ์ถ๊ฐ์ ์ผ๋ก ํ์ผ ์ด๋์ด ๋ ํ ๋์ด์ง ์นํ์ด์ง๋ฅผ ์ข ๋ฃ ํด์ผ ํ๋ค๋ฉด pause ์ ์ ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค.
๋จ์ถํค ๋ณด๋ด๊ธฐ (.bat)
::ํ์ผ์ด ์ ์ฅ๋ ์์น์ ์ด๋ฆ์ ๋ณ์๋ก ์ ์ฅํ์ต๋๋ค::ํ์ผ ์ด๋ฆ์ snedkey.vbs์
๋๋ค.
set file="%temp%\sendkey.vbs"
::vbs ํ์ผ์ ๋ง๋ญ๋๋ค.
(echo Set objShell = WScript.CreateObject("WScript.Shell"^)
echo objShell.SendKeys "%{F4}") > %file%
::๋ง๋ vbs ํ์ผ์ ์คํ์ํต๋๋ค.
::vbs ํ์ผ์ wscript๋ก ์คํํฉ๋๋ค.
wscript %file% | more
::๋ง๋ค์๋ vbsํ์ผ์ ์ญ์ ํฉ๋๋ค.
del /q %file%
๊ฒฐ๊ณผ
์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ ํ์ผ์ด ์ด๋๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค. 6์ ์ด์ ๋ฌธ์ ๋ค์ด์๋๋ฐ ๋๋ฆ ์ฝ๊ฒ ํด๋ณด๋ คํ๋๋ฐ ์ํ๋ ๋ฐฉํฅ๋๋ก ์๋์ ๋๋ฌด ์ฌํ๋ ์์ ์ด๋ค. ๊ทธ๋๋ ์ด๋ ๊ฒ ํ๋ฉด ๋ด๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ผ์ ๋ค์ด๋ฐ์ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋ ์๊ฐ์ด์๋ค.
๋๊ธ