// λ³μ μ μΈ
let message = "Hello World";
const PI = 3.14;
// ν¨μ μ μ
function sayHello() {
Logger.log("Hello!");
}
// 쑰건문
if (score >= 90) {
Logger.log("A grade");
} else {
Logger.log("Try again");
}
// λ°λ³΅λ¬Έ
for (let i = 0; i < 5; i++) {
Logger.log(i);
}
function myFirstScript() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange("A1").setValue("My First Script!");
Browser.msgBox("μλ£λμμ΅λλ€!");
}
μ λ κ΅¬κΈ μ±μ€ μ€ν¬λ¦½νΈλ₯Ό μ²μ λ°°μ°κ³ μμ΅λλ€.
κΈ°λ³Έμ μΈ "Hello World" μ€ν¬λ¦½νΈλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ€ν¬λ¦½νΈκ° μ€νλλ©΄ κ°λ¨ν λ©μμ§ μμκ° νμλμ΄μΌ ν©λλ€.
ChatGPT μλ΅
λ¬Όλ‘ μ λλ€! Google Apps Scriptμμ κ°μ₯ κΈ°λ³Έμ μΈ "Hello World" μμ λ λ€μκ³Ό κ°μ΄ μμ±ν μ μμ΅λλ€. μ΄ μ€ν¬λ¦½νΈλ μ€ν μ κ°λ¨ν λ©μμ§ μμλ₯Ό νμν©λλ€. function helloWorld() { SpreadsheetApp.getUi() // Google Sheets UIμ μ κ·Ό .alert('Hello, World!'); // λ©μμ§ μμ νμ } μ€λͺ : function helloWorld() : helloWorldλΌλ ν¨μλ₯Ό μ μν©λλ€. SpreadsheetApp.getUi() : νμ¬ Google Sheetsμ μ¬μ©μ μΈν°νμ΄μ€(UI)μ μ κ·Όν©λλ€. .alert('Hello, World!') : λ©μμ§ μμλ₯Ό λμμ "Hello, World!"λ₯Ό μ¬μ©μμκ² λ³΄μ¬μ€λλ€. μ€ν λ°©λ²: Google μ€νλ λμνΈλ₯Ό μ΄κ³ νμ₯ νλ‘κ·Έλ¨ > μ±μ€ μ€ν¬λ¦½νΈλ₯Ό ν΄λ¦ν©λλ€. μ μ½λλ₯Ό λΆμ¬λ£κ³ μ μ₯ν©λλ€. ν¨μ λͺ©λ‘μμ helloWorldλ₯Ό μ ννκ³ βΆοΈ μ€ν λ²νΌμ λλ¦ λλ€. μ²μ μ€ν μ κΆν μμ²μ΄ λνλλ©°, νμ© ν λ©μμ§ μμκ° νμλ©λλ€. λμμ΄ λ νμνμλ©΄ μΈμ λ μ§ λ¬Όμ΄λ³΄μΈμ! π
κ΅¬κΈ μ€νλ λμνΈμμ νΉμ μ
μ κ°μ μ½κ³ μμ νλ μ±μ€ μ€ν¬λ¦½νΈ μ½λλ₯Ό μμ±ν΄μ£ΌμΈμ.
λ€μ μμ
μ μννλ μ€ν¬λ¦½νΈκ° νμν©λλ€:
1. A1 μ
μ κ°μ μ½μ΄μ€κΈ°
2. μ½μ΄μ¨ κ°μ "μ²λ¦¬ μλ£: " ν
μ€νΈλ₯Ό μμ μΆκ°νκΈ°
3. κ²°κ³Όλ₯Ό B1 μ
μ μ°κΈ°
4. μ²λ¦¬κ° μλ£λλ©΄ "μμ
μ΄ μλ£λμμ΅λλ€" λ©μμ§ νμ
μ κ° κ΅¬κΈ μ±μ€ μ€ν¬λ¦½νΈ μ΄λ³΄μλΌ μ½λμ κ° λΆλΆμ΄ μ΄λ€ μν μ νλμ§ μμΈν μ€λͺ
ν΄μ£ΌμΈμ. μ€νλ λμνΈμ νμ± μνΈλ₯Ό κ°μ Έμ€λ λ°©λ²κ³Ό νΉμ μ
μ μ κ·Όνλ λ€μν λ°©λ²λ μλ €μ£ΌμΈμ.
# λ§€μΆλ°μ΄ν°
λ μ§ κ±°λID μ ν μλ λ¨κ° λ§€μΆμ‘
2024-01-05 T-1001 λ
ΈνΈλΆ 3 1,200,000 3,600,000
2024-01-12 T-1002 λͺ¨λν° 5 350,000 1,750,000
2024-01-15 T-1003 ν€λ³΄λ 10 85,000 850,000
2024-01-28 T-1004 λ§μ°μ€ 15 45,000 675,000
2024-02-03 T-1005 λ
ΈνΈλΆ 2 1,200,000 2,400,000
2024-02-14 T-1006 ν€λμ
8 120,000 960,000
2024-02-20 T-1007 λͺ¨λν° 4 350,000 1,400,000
2024-03-01 T-1008 ν€λ³΄λ 12 85,000 1,020,000
2024-03-15 T-1009 λ§μ°μ€ 20 45,000 900,000
2024-03-27 T-1010 ν€λμ
5 120,000 600,000
2024-04-05 T-1011 λ
ΈνΈλΆ 4 1,200,000 4,800,000
2024-04-18 T-1012 λͺ¨λν° 6 350,000 2,100,000
2024-04-30 T-1013 ν€λ³΄λ 15 85,000 1,275,000
2024-05-10 T-1014 λ§μ°μ€ 25 45,000 1,125,000
2024-05-23 T-1015 ν€λμ
10 120,000 1,200,000
2024-06-07 T-1016 λ
ΈνΈλΆ 2 1,200,000 2,400,000
2024-06-15 T-1017 λͺ¨λν° 3 350,000 1,050,000
2024-06-30 T-1018 ν€λ³΄λ 8 85,000 680,000
#ν΄μΌ
λ μ§ ν΄μΌλͺ
2024-01-01 μ μ
2024-02-09 μ€λ
2024-02-10 μ€λ
2024-02-11 μ€λ
2024-03-01 μΌμΌμ
2024-05-05 μ΄λ¦°μ΄λ
2024-05-15 μκ°νμ μΌ
2024-06-06 νμΆ©μΌ
κ΅¬κΈ μ€νλ λμνΈμμ λ§€μΆ λ°μ΄ν°μ λ μ§λ₯Ό λΆμνκ³ κ°κ³΅νλ μ±μ€ μ€ν¬λ¦½νΈ μ½λλ₯Ό μμ±ν΄μ£ΌμΈμ.
λ€μ κΈ°λ₯μ΄ νμν©λλ€:
1. 'λ§€μΆλ°μ΄ν°' μνΈμ Aμ΄ λ μ§λ₯Ό λΆμν΄ Gμ΄μ λΆκΈ°(Q1~Q4) νμ
2. Hμ΄μ ν΄λΉ λ μ§μ 'μ£Όλ§' λλ 'νμΌ' ꡬλΆ
3. Iμ΄μ 'ν΄μΌ' μνΈ λ°μ΄ν° κΈ°λ°μΌλ‘ 'ν΄μΌ' λλ 'μμ
μΌ' νμ
4. Jμ΄μ ν΄λΉ μ μ΄λ¦(μ: '1μ', '2μ') νμ
5. 'λΆμ' μνΈμ μλ³ λ° λΆκΈ°λ³ λ§€μΆ ν©κ³ ν
μ΄λΈ μμ±
μ€μ: λ§€μΆμ‘ λ°μ΄ν°λ '1,000,000'κ³Ό κ°μ΄ 3μ리 μ½€λ§κ° ν¬ν¨λ νμμΌλ‘ μ μ₯λμ΄ μμ΅λλ€. ν©κ³ κ³μ° μ λ°λμ μ½€λ§λ₯Ό μ κ±°νκ³ μ«μ νμ
μΌλ‘ λ³νν ν κ³μ°ν΄μΌ ν©λλ€.
μν λ°μ΄ν°λ 'λ§€μΆλ°μ΄ν°' μνΈμ κ±°λID, μ ν, μλ, λ¨κ°, λ§€μΆμ‘ νμμΌλ‘ 2024λ
1μλΆν° 6μκΉμ§μ κ±°λ κΈ°λ‘κ³Ό 'ν΄μΌ' μνΈμ 2024λ
μ£Όμ 곡ν΄μΌ μ λ³΄κ° μμ΅λλ€.
ChatGPT μλ΅
μλλ μμ²νμ κΈ°λ₯μ λͺ¨λ ν¬ν¨ν Google Apps Script μ½λμ λλ€. μ΄ μ½λλ κ΅¬κΈ μ€νλ λμνΈμμ μ€νλλ©°, λ€μκ³Ό κ°μ μν μ ν©λλ€: β κΈ°λ₯ μμ½ λ§€μΆλ°μ΄ν° μνΈμ Aμ΄ λ μ§λ₯Ό κΈ°μ€μΌλ‘: Gμ΄: λΆκΈ°(Q1~Q4) κ³μ° Hμ΄: μ£Όλ§/νμΌ νλ³ Iμ΄: ν΄μΌ μνΈλ₯Ό μ°Έκ³ ν΄ ν΄μΌ/μμ μΌ νμ Jμ΄: μ μ΄λ¦(1μ, 2μ λ±) νμ λΆμ μνΈμ: μλ³ λ° λΆκΈ°λ³ λ§€μΆ ν©κ³ ν μ΄λΈ μμ± λ§€μΆμ‘μ μ½€λ§ μ κ±° ν μ«μλ‘ λ³ννμ¬ ν©μ° π§ μ±μ€ μ€ν¬λ¦½νΈ μ½λ π μ¬μ©λ² κ΅¬κΈ μ€νλ λμνΈμμ νμ₯ νλ‘κ·Έλ¨ > Apps Script μ΄κΈ° μ μ½λλ₯Ό λΆμ¬λ£κ³ μ μ₯ λΆμμ€ν() ν¨μλ₯Ό μλ μ€ννκ±°λ λ²νΌμ μ°κ²° β μνΈ κ΅¬μ‘° μꡬμ¬ν π λ§€μΆλ°μ΄ν° μνΈ μμ λ μ§ κ±°λID μ ν μλ λ¨κ° λ§€μΆμ‘ 2024-01-05 001 μνA 2 50000 100,000 π ν΄μΌ μνΈ μμ λ μ§ 2024-01-01 2024-03-01 2024-05-05 νμνμλ©΄ μ°¨νΈ μμ±, λ²νΌ μ°κ²°, μλ μ€ν μ€μ λ±λ λμλ릴κ²μ!
5. μ€μΌμ€λ‘ λΆμμλ£ λ³΄κ³ μ μ΄λ©μΌ μλν
# μν λ°μ΄ν°
## λ§€μΆλ°μ΄ν°
λ μ§ κ±°λID μ ν μλ λ¨κ° λ§€μΆμ‘
2024-01-05 T-1001 λ
ΈνΈλΆ 3 1,200,000 3,600,000
2024-01-12 T-1002 λͺ¨λν° 5 350,000 1,750,000
2024-01-15 T-1003 ν€λ³΄λ 10 85,000 850,000
2024-01-28 T-1004 λ§μ°μ€ 15 45,000 675,000
2024-02-03 T-1005 λ
ΈνΈλΆ 2 1,200,000 2,400,000
2024-02-14 T-1006 ν€λμ
8 120,000 960,000
2024-02-20 T-1007 λͺ¨λν° 4 350,000 1,400,000
2024-03-01 T-1008 ν€λ³΄λ 12 85,000 1,020,000
2024-03-15 T-1009 λ§μ°μ€ 20 45,000 900,000
2024-03-27 T-1010 ν€λμ
5 120,000 600,000
2024-04-05 T-1011 λ
ΈνΈλΆ 4 1,200,000 4,800,000
2024-04-18 T-1012 λͺ¨λν° 6 350,000 2,100,000
2024-04-30 T-1013 ν€λ³΄λ 15 85,000 1,275,000
2024-05-10 T-1014 λ§μ°μ€ 25 45,000 1,125,000
2024-05-23 T-1015 ν€λμ
10 120,000 1,200,000
2024-06-07 T-1016 λ
ΈνΈλΆ 2 1,200,000 2,400,000
2024-06-15 T-1017 λͺ¨λν° 3 350,000 1,050,000
2024-06-30 T-1018 ν€λ³΄λ 8 85,000 680,000
## ν΄μΌ
λ μ§ ν΄μΌλͺ
2024-01-01 μ μ
2024-02-09 μ€λ
2024-02-10 μ€λ
2024-02-11 μ€λ
2024-03-01 μΌμΌμ
2024-05-05 μ΄λ¦°μ΄λ
2024-05-15 μκ°νμ μΌ
2024-06-06 νμΆ©μΌ
κ΅¬κΈ μ±μ€ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νμ¬ μ λ§€μΆ λΆμ λ°μ΄ν°λ₯Ό λ§€μΌ μ§μ λ μκ°μ μ΄λ©μΌλ‘ μλ λ°μ‘νλ κΈ°λ₯μ ꡬνν΄μ£ΌμΈμ.
λ€μ κΈ°λ₯μ΄ νμν©λλ€:
1. λ§€μΌ μμΉ¨ 9μμ λ§€μΆ λ°μ΄ν°λ₯Ό μλμΌλ‘ λΆμ
2. λΆμλ κ²°κ³Όλ₯Ό HTML νμμ μ΄λ©μΌλ‘ μμ±
3. μ΄λ©μΌμλ λ€μ λ΄μ©μ ν¬ν¨:
- μλ³ λ§€μΆ ν©κ³ ν
μ΄λΈ
- λΆκΈ°λ³ λ§€μΆ ν©κ³ ν
μ΄λΈ
- μ΅κ·Ό 5건μ κ±°λ λ΄μ
- μ€νλ λμνΈ λ§ν¬
4. μ΄λ©μΌ μμ μ μ€μ λ° μλ λ°μ‘ κΈ°λ₯
5. νΈλ¦¬κ±° μλ μ€μ κΈ°λ₯
μ€μ: λ§€μΆμ‘ λ°μ΄ν°λ '1,000,000'κ³Ό κ°μ΄ 3μ리 μ½€λ§κ° ν¬ν¨λ νμμΌλ‘ μ μ₯λμ΄ μμ΅λλ€. ν©κ³ κ³μ° μ λ°λμ μ½€λ§λ₯Ό μ κ±°νκ³ μ«μ νμ
μΌλ‘ λ³νν ν κ³μ°ν΄μΌ ν©λλ€.
μ€ν¬λ¦½νΈλ μ€νλ λμνΈ λ©λ΄μμ μ½κ² μ κ·Όν μ μλλ‘ λ©λ΄λ₯Ό μμ±νκ³ , λΆμ λ° λ³΄κ³ μ μ μ‘μ μν΄λ¦μΌλ‘ μ€νν μ μκ² ν΄μ£ΌμΈμ. λν λ°μ΄ν° νμκ³Ό ν λμμΈμ μ κ²½μ¨μ 보기 μ’μ μ΄λ©μΌμ΄ μμ±λλλ‘ ν΄μ£ΌμΈμ.
ChatGPT μλ΅
μλλ μμ²νμ κΈ°λ₯μ λͺ¨λ ν¬ν¨ν Google Apps Script μ 체 μ½λμ λλ€. μ΄ μ½λλ λ€μμ μνν©λλ€: λ§€μΆ λ°μ΄ν°λ₯Ό λΆμ (μλ³/λΆκΈ°λ³ λ§€μΆ, μ΅κ·Ό κ±°λ) HTML μ΄λ©μΌλ‘ μλ μμ± λ° λ°μ‘ λ§€μΌ 9μ μλ νΈλ¦¬κ±° μ€μ μ¬μ©μ μ μ λ©λ΄ μμ± 3μ리 μ½€λ§ μ κ±° ν μ«μ μ²λ¦¬ β 1. Google Apps Script μ 체 μ½λ β 2. μ¬μ© λ°©λ² Google Sheetsμμ νμ₯ νλ‘κ·Έλ¨ > Apps Script ν΄λ¦ μ μ½λ μ 체 λ³΅μ¬ & λΆμ¬λ£κΈ° μ΄λ©μΌ μμ μ μ£Όμ "your_email@example.com"μ μ€μ μ΄λ©μΌλ‘ μμ onOpen() μλ μ€ν β μ€νλ λμνΈ μλ¨ λ©λ΄μ π λ§€μΆ λ¦¬ν¬νΈ μμ± ν λ²λ§ createDailyTrigger()λ₯Ό μλ μ€ν β λ§€μΌ 9μ μλ μ΄λ©μΌ λ°μ‘ μ€μ μλ£ π‘ μ°Έκ³ ν ν΄μΌ μνΈ λ°μ΄ν°λ νμ¬ μ½λμ μ§μ νμ©λμ§ μμ§λ§, μνλ©΄ ν΄μΌ μ μΈ λ‘μ§λ μΆκ° κ°λ₯ν©λλ€. νΈλ¦¬κ±° μ€μ μ΄νμλ μλ μ€ν μμ΄ λ§€μΌ μλ λ°μ‘λ©λλ€. μ΄λ©μΌ ν¬λ§·μ κ°λ¨ν λμμΈμ μ μ©ν΄ κ°λ μ±κ³Ό μ λ¬Έμ±μ λͺ¨λ κ³ λ €νμ΅λλ€. νμμ μ΄λ©μΌ μμ μ λ€μ€ μ€μ , μ‘°κ±΄λΆ μμ κ°μ‘° λ±λ μΆκ°ν΄λ릴 μ μμ΄μ! μνμλμ?
### ν둬ννΈ 1: μ€λ¬Έμ‘°μ¬ λ΄μ© μμ±
μ§μ λ§μ‘±λλ₯Ό μΈ‘μ νκΈ° μν μ€λ¬Έμ‘°μ¬ λ΄μ©μ μμ±ν΄μ£ΌμΈμ. λ€μ μ£Όμ λ₯Ό ν¬ν¨ν΄μΌ ν©λλ€:
1. μ
무 νκ²½κ³Ό λ³΅μ§ νν (2λ¬Έν)
2. νμ¬ κ²½μμ§μ λν μ λ’°λ (2λ¬Έν)
3. λλ£λ€κ³Όμ κ΄κ³ (2λ¬Έν)
4. μκΈ° μ±μ₯κ³Ό λ°μ κΈ°ν (2λ¬Έν)
5. μ λ°μ μΈ μ§μ λ§μ‘±λ (2λ¬Έν)
κ° μ§λ¬Έμλ μ μ ν λ΅λ³ λ°©μ(1~5μ μ²λ, κ°κ΄μ, μ£Όκ΄μ λ±)λ μ μν΄μ£ΌμΈμ.
μ€λ¬Έμ‘°μ¬ μμ λΆλΆμ λ€μ΄κ° μκ°κΈκ³Ό μ€λ¬Έ λͺ©μ μ€λͺ
λ μμ±ν΄μ£ΌμΈμ.
λ§μ§λ§μλ μλ΅μμ λΆμμ μ§κΈμ λ¬Όμ΄λ³΄λ μ§λ¬Έλ ν¬ν¨ν΄μ£ΌμΈμ.
### ν둬ννΈ 2: ꡬκΈνΌ μλ μμ± μ€ν¬λ¦½νΈ
μμ±λ μ€λ¬Έμ‘°μ¬ λ΄μ©μ λ°νμΌλ‘, ꡬκΈνΌμ μλμΌλ‘ μμ±νλ μ±μ€ μ€ν¬λ¦½νΈ μ½λλ₯Ό μμ±ν΄μ£ΌμΈμ.
[μ¬κΈ°μ 1λ¨κ³μμ λ°μ μ€λ¬Έμ‘°μ¬ λ΄μ©μ λΆμ¬λ£κΈ°]
μ½λλ λ€μ κΈ°λ₯μ ν¬ν¨ν΄μΌ ν©λλ€:
1. μ μ§λ¬Έλ€λ‘ ꡬμ±λ ꡬκΈνΌ μλ μμ±
2. κ° μ§λ¬Έ μ ν(μ²λ, κ°κ΄μ, μ£Όκ΄μ λ±)μ λ§κ² μ€μ
3. νΌ μλ΅μ μ€νλ λμνΈλ‘ μλ μ°κ²°
4. νΌ μ λͺ©, μ€λͺ
, λμμΈ μ€μ
μ κ° νλ‘κ·Έλλ° μ§μμ΄ μ ν μμΌλ, μ½λ μ¬μ©λ²μ λ¨κ³λ³λ‘ μμΈν μ€λͺ
ν΄μ£ΌμΈμ:
- μ½λλ₯Ό μ΄λμ λΆμ¬λ£μ΄μΌ νλμ§
- μ½λ μ€ν λ°©λ²
- νμν κΆν μ€μ λ°©λ²
- μ€ν κ²°κ³Ό νμΈ λ°©λ²
μ€μν κΈ°μ μ μꡬμ¬ν:
- μ½λ μ€ν μ νμν κ°μ²΄ μ‘΄μ¬ μ¬λΆ νμΈ
- λ°μ΄ν° μ ν¨μ± κ²μ¬ ν¬ν¨
- μ«μ λ°μ΄ν°(μ½€λ§ ν¬ν¨ λ±) μ¬λ°λ₯Έ λ³ν ν κ³μ°
- μ€λ₯ μ²λ¦¬ λ° μμΈ μν© λμ
- μ¬μ©μ μΉνμ μΈ μλ¦Ό κΈ°λ₯
ChatGPT μλ΅
μ’μ΅λλ€! μλμ μμ²νμ μ§μ λ§μ‘±λ μ€λ¬Έμ‘°μ¬λ₯Ό λ°νμΌλ‘ Google Formsλ₯Ό μλ μμ±νλ Google Apps Script μ½λλ₯Ό μ 곡λλ¦¬κ³ , μ¬μ©λ²μ λ¨κ³λ³λ‘ μμ£Ό μ½κ² μ€λͺ λ릴κ²μ. β 1. μ 체 μ½λ (볡μ¬ν΄μ κ·Έλλ‘ μ¬μ©) function createEmployeeSatisfactionForm() { const FORM_TITLE = "μ§μ λ§μ‘±λ μ€λ¬Έμ‘°μ¬"; const FORM_DESCRIPTION = "νμ¬λ λ λμ 근무 νκ²½κ³Ό μ‘°μ§λ¬Ένλ₯Ό λ§λ€μ΄κ°κΈ° μν΄, λͺ¨λ μμ§μμ μ견μ μμ€νκ² μκ°νκ³ μμ΅λλ€. λ³Έ μ€λ¬Έμ μ§μ μ¬λ¬λΆμ 근무 λ§μ‘±λμ κ΄λ ¨λ λ€μν μ£Όμ λ₯Ό λ€λ£¨λ©°, μλ΅μ μ΅λͺ μΌλ‘ μ²λ¦¬λ©λλ€. μμ§ν μ견μ μ£Όμλ©΄, ν₯ν λ³΅μ§ κ°μ κ³Ό μ‘°μ§ λ¬Έν λ°μ μ ν° λμμ΄ λ©λλ€.\n\nμμ μκ°μ μ½ 5λΆμ λλ€.\nκ°μ¬ν©λλ€."; try { const form = FormApp.create(FORM_TITLE) .setDescription(FORM_DESCRIPTION) .setIsQuiz(false); Logger.log(` νΌ μμ± μλ£: ${form.getEditUrl()}`); const sections = [ { title: "1. μ 무 νκ²½κ³Ό λ³΅μ§ νν", questions: [ "νμ¬μ μ¬λ¬΄μ€ νκ²½(μ²κ²°, μμ, μ€λΉ λ±)μ λ§μ‘±νμλμ?", "νμ¬κ° μ 곡νλ λ³΅μ§ νν(μμ¬, ν΄κ°, 건κ°κ²μ§ λ±)μ΄ μ€μ§μ μΌλ‘ λμμ΄ λλ€κ³ λλΌμλμ?" ] }, { title: "2. νμ¬ κ²½μμ§μ λν μ λ’°λ", questions: [ "νμ¬μ κ²½μμ§μ΄ μ‘°μ§μ μ¬λ°λ₯Έ λ°©ν₯μΌλ‘ μ΄λκ³ μλ€κ³ μκ°νμλμ?", "κ²½μμ§μ μ§μλ€μ μ견μ μ§μ§νκ² κ³ λ €νλ€κ³ λλΌμλμ?" ] }, { title: "3. λλ£λ€κ³Όμ κ΄κ³", questions: [ "νμ¬ μμλ ν λλ λΆμ λ΄ λλ£λ€κ³Όμ κ΄κ³λ μνν νΈμΈκ°μ?", "μ§μ₯ λ΄μμ μλ‘ μ‘΄μ€νκ³ λ°°λ €νλ λ¬Ένκ° μ μ°©λμ΄ μλ€κ³ λλΌμλμ?" ] }, { title: "4. μκΈ° μ±μ₯κ³Ό λ°μ κΈ°ν", questions: [ "νμ¬ μ 무λ₯Ό ν΅ν΄ κ°μΈμ μΌλ‘ μ±μ₯νκ³ μλ€κ³ λλΌμλμ?", "νμ¬λ μ§μλ€μκ² κ²½λ ₯ κ°λ°μ μν κΈ°νλ₯Ό μ 곡νκ³ μλ€κ³ μκ°νμλμ?" ] }, { title: "5. μ λ°μ μΈ μ§μ λ§μ‘±λ", questions: [ "νμ¬ νμ¬μ λ€λλ κ²μ μ λ°μ μΌλ‘ λ§μ‘±νμλμ?" ] } ]; sections.forEach(section => { form.addPageBreakItem().setTitle(section.title); section.questions.forEach(q => { form.addScaleItem() .setTitle(q) .setBounds(1, 5) .setLabels("1: μ ν μλλ€", "5: λ§€μ° κ·Έλ λ€"); }); }); // μ£Όκ΄μ μλ΅ form.addParagraphTextItem() .setTitle("νμ¬μ λν΄ κ°μ λμμΌλ©΄ νλ μ μ΄λ λ°λΌλ μ μ΄ μλ€λ©΄ μμ λ‘κ² μμ±ν΄μ£ΌμΈμ."); // μλ΅μ μ 보 form.addPageBreakItem().setTitle(" μλ΅μ μ 보 (μ ν μ¬ν)"); form.addMultipleChoiceItem() .setTitle("νμ¬ μμ λΆμλ₯Ό μ νν΄ μ£ΌμΈμ.") .setChoiceValues(["μΈμ¬ν", "λ§μΌν ν", "κ°λ°ν", "μμ ν", "κΈ°ν"]) .setRequired(false); form.addMultipleChoiceItem() .setTitle("νμ¬ μ§κΈμ μ νν΄ μ£ΌμΈμ.") .setChoiceValues(["μ¬μ", "λ리", "κ³Όμ₯", "μ°¨μ₯", "λΆμ₯", "μμ", "κΈ°ν"]) .setRequired(false); // μλ΅ μ°κ²° μ€νλ λμνΈ const sheet = SpreadsheetApp.create(`${FORM_TITLE} μλ΅`); form.setDestination(FormApp.DestinationType.SPREADSHEET, sheet.getId()); Logger.log(` μλ΅ μ€νλ λμνΈ μμ± μλ£: ${sheet.getUrl()}`); } catch (error) { Logger.log(` μ€λ₯ λ°μ: ${error.message}`); } } β 2. μ¬μ© λ°©λ² (νλ‘κ·Έλλ° μ§μ μμ΄λ λ°λΌν μ μμ΄μ!) π Step 1: κ΅¬κΈ λλΌμ΄λΈμμ "μ±μ€ μ€ν¬λ¦½νΈ" μ΄κΈ° https://script.google.com μ μ μ νλ‘μ νΈ ν΄λ¦ π Step 2: μ½λ λΆμ¬λ£κΈ° κΈ°μ‘΄ μ½λ μμ μ μ½λλ₯Ό κ·Έλλ‘ λ³΅μ¬ν΄μ λΆμ¬λ£κΈ° μλ¨ μΌμͺ½μ "νμΌλͺ "μ μ§μ_λ§μ‘±λ_νΌ_μμ±κΈ° λ±μΌλ‘ λ³κ²½ κ°λ₯ π Step 3: μ€ν μλ¨μμ function createEmployeeSatisfactionForm μ ν βΆ μ€ν λ²νΌ ν΄λ¦ μ²μ μ€ν μ κΆν μμ² β κ³μ μ ν β "κ³ κΈ" ν΄λ¦ β "νλ‘μ νΈ μ΄λ¦(μμ νμ§ μμ)" ν΄λ¦ β νμ© π Step 4: μ€ν κ²°κ³Ό νμΈ λ‘κ·Έ 보기: 보기 > λ‘κ·Έ λ©λ΄ ν΄λ¦νλ©΄ μμ±λ νΌ λ§ν¬μ μλ΅ μ€νλ λμνΈ λ§ν¬λ₯Ό νμΈ κ°λ₯ β 3. μ½λ κΈ°λ₯ μμ½ κΈ°λ₯ μ€λͺ β μ€λ³΅ νΌ λ°©μ§ κ°μ μ λͺ©μ νΌμ΄ μμΌλ©΄ μλ‘ λ§λ€μ§ μμ β 5μ μ²λ λ¬Έν μ€μ κ° λ¬Ένμ λ§κ² λ§μ‘±λ 1~5λ‘ μ ν κ°λ₯ β μ£Όκ΄μ λ° κ°κ΄μ μλ΅ μ€μ λ§μ§λ§ μ§λ¬Έλ€ λ°μ μλ£ β μλ΅ μλ μ€νλ λμνΈ μ°κ²° λ³λ μ€μ μμ΄ μλ μ°κ²° β μ€λ₯ μ²λ¦¬ λ° λ‘κ·Έ κΈ°λ‘ λ¬Έμ λ°μ μ λ‘κ·Έμ μ€λ₯ λ©μμ§ νμ β 4. μμ£Ό 묻λ μ§λ¬Έ Q. νΌμ μ΄λμ νμΈνλμ?A. μ€ν ν λ‘κ·Έμμ νΌ URLμ΄ μ 곡λ©λλ€. λλ λ΄ λλΌμ΄λΈμμ μλ‘ μμ±λ ꡬκΈνΌμ μ°Ύμ μ μμ΄μ. Q. μ€λ¬Έ λ¬Ένμ λ°κΎΈκ³ μΆμ΄μ.A. sections λ°°μ΄μ΄λ μλ μ§λ¬Έ ν μ€νΈλ₯Ό μμ νμλ©΄ λ©λλ€. Q. μ¬λ¬ λ² μ€ννλ©΄ μ΄λ»κ² λλμ?A. κ°μ μ λͺ©μ νΌμ΄ μμΌλ©΄ λ€μ λ§λ€μ§ μκ³ λ‘κ·Έμ μλ΄ λ©μμ§λ₯Ό νμν©λλ€. νμνμλ©΄ μ΄ μ½λλ₯Ό λ²νΌ ν΄λ¦λ§μΌλ‘ μ€νν μ μλλ‘ Google Workspace Add-on ννλ‘ μ κ·Έλ μ΄λνκ±°λ, λ¬Ένμ κ΅¬κΈ μ€νλ λμνΈμ μ μ₯ν λ€ νΌμ λμ μΌλ‘ μμ±νλ λ°©μλ λμλ릴 μ μμ΄μ! π νμνμ κΈ°λ₯μ΄ μλ€λ©΄ μΈμ λ μ§ λ§μ μ£ΌμΈμ.
### ν둬ννΈ 3: μλ΅ λ°μ΄ν° λΆμ λ° λ³΄κ³ μ μλν
ꡬκΈνΌκ³Ό μ°κ²°λ μ€νλ λμνΈμμ μλ΅ λ°μ΄ν°λ₯Ό μλμΌλ‘ λΆμνκ³ λ³΄κ³ μλ₯Ό μμ±νλ μ±μ€ μ€ν¬λ¦½νΈ μ½λλ₯Ό μμ±ν΄μ£ΌμΈμ.
λ€μ κΈ°λ₯μ΄ νμν©λλ€:
1. μλ΅ λ°μ΄ν° μλ μ§κ³ λ° ν΅κ³ μ²λ¦¬
- κ° μ§λ¬Έλ³ νκ· μ μ κ³μ°
- λΆμλ³/μ§κΈλ³ μλ΅ λΉκ΅
- μλ΅ λΆν¬ λΆμ
2. λΆμ κ²°κ³Όλ₯Ό 보μ¬μ£Όλ μκ°μ λμ보λ μνΈ μλ μμ±
3. μ£Όκ°/μκ° μμ½ λ³΄κ³ μ μ΄λ©μΌ μλ λ°μ‘
4. νμν λͺ¨λ μνΈ μλ μμ± λ° κ΄λ¦¬
μ€μν κΈ°μ μ μꡬμ¬ν:
- μ½λ μ€ν μ νμν κ°μ²΄ μ‘΄μ¬ μ¬λΆ νμΈ
- λ°μ΄ν° μ ν¨μ± κ²μ¬ ν¬ν¨
- μ«μ λ°μ΄ν°(μ½€λ§ ν¬ν¨ λ±) μ¬λ°λ₯Έ λ³ν ν κ³μ°
- μ€λ₯ μ²λ¦¬ λ° μμΈ μν© λμ
- μ¬μ©μ μΉνμ μΈ μλ¦Ό κΈ°λ₯
μ½λ μ¬μ©λ²μ λ¨κ³λ³ μ€λͺ
μΌλ‘ μμΈν μλ΄ν΄μ£Όμκ³ , μ΄λ³΄μλ μ΄ν΄ν μ μλ μ£Όμμ ν¬ν¨ν΄μ£ΌμΈμ. λν μλν κΈ°λ₯ μ€μ (νΈλ¦¬κ±° μ€μ ) λ°©λ²λ μ€λͺ
ν΄μ£ΌμΈμ.
ChatGPT μλ΅
λ¬Όλ‘ μ λλ€! μλλ Google Forms μλ΅ λ°μ΄ν°λ₯Ό λΆμνκ³ μλννλ Google Apps Script μ 체 μ½λμ ν¨κ» μ€μ λ°©λ² λ° κΈ°λ₯ μ€λͺ μ λ΄μμ΅λλ€. μ΄λ³΄μλ μ΄ν΄ν μ μλλ‘ λ¨κ³λ³λ‘ μλ΄λ릴κ²μ. β μ 체 κΈ°λ₯ μμ½ μ΄ μ€ν¬λ¦½νΈλ λ€μμ μλμΌλ‘ μνν©λλ€: μλ΅ λ°μ΄ν°λ₯Ό λΆμ (νκ· , λΆμ/μ§κΈλ³ λΉκ΅, λΆν¬ λΆμ) μκ°μ λμ보λ μνΈ μμ± μ£Όκ°/μκ° μμ½ λ³΄κ³ μλ₯Ό μ΄λ©μΌλ‘ λ°μ‘ μνΈ λ° λ°μ΄ν° μ ν¨μ± κ²μ¬ + μλ¬ λμ + μ¬μ©μ λ‘κ·Έ π μ€ν¬λ¦½νΈ μ½λ (볡μ¬νμ¬ Apps Scriptμ λΆμ¬λ£κΈ°) π μ¬μ©λ² μλ΄ (λ¨κ³λ³) 1λ¨κ³: μ€νλ λμνΈμ ꡬκΈνΌ μ°κ²° Google Form μμ± β μλ΅ μ°κ²° β μ€νλ λμνΈ μμ± μλ΅ μνΈ μ΄λ¦μ κΈ°λ³Έκ° Form Responses 1μΌλ‘ μ μ§νκ±°λ μ½λμμ λ³κ²½ 2λ¨κ³: Apps Script μ€μ [νμ₯ νλ‘κ·Έλ¨] > [Apps Script] μ΄κΈ° μ μ½λ λ³΅μ¬ β λΆμ¬λ£κΈ° mainAnalyzeFormResponses(), createDashboard(), sendSummaryEmail() λ±μ μ€νν΄ ν μ€νΈ 3λ¨κ³: νΈλ¦¬κ±°(μλ μ€ν) μ€μ Apps Script μ°½ β μ’μΈ‘ μκ³ μμ΄μ½ β± "νΈλ¦¬κ±°" ν΄λ¦ μ νΈλ¦¬κ±° μΆκ° ν¨μ: mainAnalyzeFormResponses μ΄λ²€νΈ: μκ° κΈ°λ° β λ§€μ£Ό / λ§€μ κ°μ λ°©λ²μΌλ‘ sendSummaryEmail, createDashboardλ μ€μ κ°λ₯ π κΆν μμ² μ²μ μ€ν μ "μ΄ μ±μ νμΈλμ§ μμ"μ΄ λμ¬ μ μμ΄μ. μ΄ κ²½μ°: κ³ κΈ β νλ‘μ νΈ μ΄λ¦ ν΄λ¦ β μΉμΈ μ§ν π μ¬μ©μ λ‘κ·Έ 보기 Apps Script λ©λ΄ β 보기 β λ‘κ·Έ Logger.log() λ©μμ§λ‘ μν νμΈ κ°λ₯ π¬ μΆκ° ν μνΈ μ΄λ¦μ΄ λ€λ₯Ό κ²½μ° μ½λμμ "Form Responses 1" λ±μ μνλ μ΄λ¦μΌλ‘ λ°κΏμ£ΌμΈμ. νΌμ λ°λΌ μ§λ¬Έ μ/ννκ° λ¬λΌμ§ μ μμΌλ―λ‘, νμμ questionStartCol κ° μ‘°μ κ°λ₯ μκ°μ ν₯μμ μνλ©΄ Google Charts APIλ λ€λ₯Έ λꡬμ μ°λλ κ°λ₯ν΄μ νμνλ€λ©΄ λΆμ/μ§κΈ/μ§λ¬Έ νλͺ© μμλ ν¬ν¨ν μμ μ€νλ λμνΈ ν νλ¦Ώλ λ§λ€μ΄λ릴 μ μμ΄μ. μνμλμ?
κ΅¬κΈ μ±μ€ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νμ¬ μ£Όκ°μ 보λ₯Ό λΆλ¬μ€λ κΈ°λ₯μ ꡬνν΄μ£ΌμΈμ.
λ€μ κΈ°λ₯μ΄ νμν©λλ€:
1. μΌν νμ΄λΈμ€ API μ΄μ©νμ¬ μ£Όκ°μ 보 λΆλ¬μ€λ κΈ°λ₯ ꡬν
2. B1 μ
μ μλ ν°μ»€ κ°μΌλ‘ μ£Όκ° μ 보 λΆλ¬μμ€
3. 3νμ μ΄λ¦, ν°μ»€, νμ¬κ°, μκ°, μ’
κ°, λ μ§
4. 4νμ 3ν μμ±μ λ§κ² λ°μ΄ν° μ½μ
μ€μν κΈ°μ μ μꡬμ¬ν:
- μ½λ μ€ν μ νμν κ°μ²΄ μ‘΄μ¬ μ¬λΆ νμΈ
- λ°μ΄ν° μ ν¨μ± κ²μ¬ ν¬ν¨
- μ«μ λ°μ΄ν°(μ½€λ§ ν¬ν¨ λ±) μ¬λ°λ₯Έ λ³ν ν κ³μ°
- μ€λ₯ μ²λ¦¬ λ° μμΈ μν© λμ
- μ¬μ©μ μΉνμ μΈ μλ¦Ό κΈ°λ₯
function fetchStockInfo() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const symbol = sheet.getRange("B1").getValue().toString().trim().toUpperCase();
if (!symbol) {
SpreadsheetApp.getUi().alert("B1 μ
μ μ ν¨ν ν°μ»€λ₯Ό μ
λ ₯ν΄μ£ΌμΈμ.");
return;
}
const url = "https://query1.finance.yahoo.com/v8/finance/chart/" + symbol;
try {
const response = UrlFetchApp.fetch(url);
const data = JSON.parse(response.getContentText());
const result = data.chart?.result?.[0];
if (!result) {
SpreadsheetApp.getUi().alert("μ ν¨ν λ°μ΄ν°λ₯Ό μ°Ύμ μ μμ΅λλ€.");
return;
}
const meta = result.meta;
const timestamp = result.timestamp;
const indicators = result.indicators?.quote?.[0];
const name = meta.symbol || "N/A";
const currentPrice = validateNumber(meta.regularMarketPrice);
const open = validateNumber(meta.chartPreviousClose);
const close = validateNumber(indicators?.close?.[indicators.close.length - 1]);
const date = new Date(timestamp[timestamp.length - 1] * 1000);
const dateString = Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss");
// ν€λ μ
λ ₯
sheet.getRange("A3:F3").setValues([["μ΄λ¦", "ν°μ»€", "νμ¬κ°", "μκ°", "μ’
κ°", "λ μ§"]]);
// λ°μ΄ν° μ
λ ₯
sheet.getRange("A4:F4").setValues([[name, symbol, currentPrice, open, close, dateString]]);
SpreadsheetApp.getUi().alert(` ${symbol}μ μ£Όκ° μ λ³΄κ° μ±κ³΅μ μΌλ‘ μ
λ°μ΄νΈλμμ΅λλ€.`);
} catch (e) {
Logger.log(e);
SpreadsheetApp.getUi().alert("μ€λ₯ λ°μ: " + e.message);
}
}
function validateNumber(value) {
if (typeof value === "number" && !isNaN(value)) {
return Number(value.toFixed(2));
} else {
return "N/A";
}
}
ChatGPT μλ΅
https://query1.finance.yahoo.com/v8/finance/chart/{symbol} μ΄ URLμ Yahoo Financeμ μ°¨νΈ λ°μ΄ν°μ© APIμΈλ°, λ€ννλ μ΄κ±΄ μμ§ κ³΅κ° μ κ·Όμ΄ μ΄λ μ λ κ°λ₯ν΄μ π― μ΄ APIλ₯Ό μ¬μ©νλ©΄ λ€μ μ 보λ₯Ό κ°μ Έμ¬ μ μμ΅λλ€: chart.result[0].meta μμ ν°μ»€ κ΄λ ¨ λ©ν μ 보 νμ¬κ°, μκ°, κ³ κ°, μ κ°, μ’ κ° λ± μμΈ μ 보 β μꡬμ¬ν λ°μν μμ λ μ½λ function fetchStockInfo() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const symbol = sheet.getRange("B1").getValue().toString().trim().toUpperCase(); if (!symbol) { SpreadsheetApp.getUi().alert("B1 μ μ μ ν¨ν ν°μ»€λ₯Ό μ λ ₯ν΄μ£ΌμΈμ."); return; } const url = "https://query1.finance.yahoo.com/v8/finance/chart/" + symbol; try { const response = UrlFetchApp.fetch(url); const data = JSON.parse(response.getContentText()); const result = data.chart?.result?.[0]; if (!result) { SpreadsheetApp.getUi().alert("μ ν¨ν λ°μ΄ν°λ₯Ό μ°Ύμ μ μμ΅λλ€."); return; } const meta = result.meta; const timestamp = result.timestamp; const indicators = result.indicators?.quote?.[0]; const name = meta.symbol || "N/A"; const currentPrice = validateNumber(meta.regularMarketPrice); const open = validateNumber(meta.chartPreviousClose); const close = validateNumber(indicators?.close?.[indicators.close.length - 1]); const date = new Date(timestamp[timestamp.length - 1] * 1000); const dateString = Utilities.formatDate(date, Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss"); // ν€λ μ λ ₯ sheet.getRange("A3:F3").setValues([["μ΄λ¦", "ν°μ»€", "νμ¬κ°", "μκ°", "μ’ κ°", "λ μ§"]]); // λ°μ΄ν° μ λ ₯ sheet.getRange("A4:F4").setValues([[name, symbol, currentPrice, open, close, dateString]]); SpreadsheetApp.getUi().alert(`β ${symbol}μ μ£Όκ° μ λ³΄κ° μ±κ³΅μ μΌλ‘ μ λ°μ΄νΈλμμ΅λλ€.`); } catch (e) { Logger.log(e); SpreadsheetApp.getUi().alert("μ€λ₯ λ°μ: " + e.message); } } function validateNumber(value) { if (typeof value === "number" && !isNaN(value)) { return Number(value.toFixed(2)); } else { return "N/A"; } } π‘ μ°Έκ³ μ¬ν meta.regularMarketPriceλ μ€μκ° νμ¬κ°λ₯Ό λνλ λλ€. meta.chartPreviousCloseλ μ μΌ μ’ κ°(νΉμ μκ°λ‘ κ·Όμ¬ κ°λ₯) indicators.quote[0].closeλ μ’ κ° λ°°μ΄ β κ°μ₯ μ΅κ·Ό κ° μ¬μ© Yahooλ μ’ μ’ λ°μ΄ν° ν¬λ§·μ λ°κΎΈλ―λ‘ μμΈ μ²λ¦¬ μ€μν©λλ€. νμνλ©΄ μ΄κ±Έ μΌμΌ μλ κ°±μ νΈλ¦¬κ±°λ‘ μ€μ νκ±°λ, λ€μ€ ν°μ»€ μ§μλ κ°λ₯ν΄μ. λ μΆκ°ν΄λ³ΌκΉμ?