2025年9月13日 星期六

只要點兩下就能利用彰化縣EIP系統學生帳號CSV產出指定學生名單的Google Classroom帳號總表

系列文章:
1.只要點兩下就能產出彰化縣Cloud School 學生帳號密碼匯入彰化縣EIP系統學生帳號密碼的CSV
1.https://skjhcreator.blogspot.com/2025/08/cloud-school-eipcsv.html
2.只要點兩下就能利用彰化縣EIP系統學生帳號CSV產出建立Google Classroom 學生總表
2.https://skjhcreator.blogspot.com/2025/08/eipcsvgoogle-classroom.html 
3.
只要點兩下就能利用彰化縣EIP系統學生帳號CSV產出指定學生名單的Google Classroom學生帳號總表
3.https://skjhcreator.blogspot.com/2025/09/eipcsvgoogle-classroom.html

        彰化縣數位學習師生單一帳號系統(EIP=Enterprise Information Portal)於2025年7月7日正式啟用。學務處想利用Google Classroom 來建立全校視訊廣播。因此,給資訊組全年級各班班長的年班座號總表。而資訊組要能產出一個全年級各班班長的Classroom 帳號總表,方便學務處將各班班長加入Google Classroom。 而資訊組只要將這件事簡化,只要點兩下就能得到指定學生名單的Google Classroom帳號總表。然後教學務處如何使用這個程式即可。
        由於EIP系統學生帳號只有帳號,沒有後面的@chc.edu.tw。還要想辦法將@chc.edu.tw加入。但問題是用Excel開啟CSV,學生帳號只有數字,在Excel 格式就會跑掉。比方說學生帳號0432579,在Excel,就會變成432579。若用記事本開,學生帳號"0432579",完全沒法用尋找、取代等方式來簡單完成。就要複製@chc.edu.tw,然後一個個貼上。

1.EIP學生帳號下載方式:
下載的學生資料檔名為學校代碼_學生資料_日期時間.CSV,其格式如下:


下載檔案解壓密碼:demo1234
Here is the website where you can download the program and find instructions:
Download。Extraction Password: demo1234
使用教學(Instructional videos):



以下是開發過程與原始碼 (Development process and code):
程式名稱(Program name):pyStudent2ClassRoomStudentAccount.py
程式內容(Code):
import csv
import os

# 取得目前的工作目錄
current_directory = os.getcwd()
# 取得目前的工作目錄內input
current_directory_input = current_directory+"\\input\\"
# 取得工作目錄input內所有檔案名稱
current_directory_input_files = os.listdir(current_directory_input)
# 以副檔名來判斷設定相對應的檔案
for i in current_directory_input_files:
    TempFileName,TempFileExtension = os.path.splitext(i)
    if TempFileExtension == ".csv":
        TempCSVFile = i
    elif TempFileExtension == ".xlsx":
        TempXLSXFile = i
    else:
        TempTXT = i
             
# 設定CSVList為一個 list
CSVList = []
# 開啟 CSV 檔案
with open(current_directory_input+TempCSVFile, mode='r', encoding='utf-8') as file:
    # 建立 CSV 讀取器
    reader = csv.reader(file)
    # 逐行讀取 CSV 檔案內容
    for row in reader:
        CSVList.append(row)

# CSVListTitle 取得 CSVList[0]
CSVListTitle = CSVList[0]
# 刪除CSVList[0]
CSVList.pop(0)
# 對CSVList 進行排序
CSVList.sort(key=lambda x: x[0])

ResultList = []
ResultList.append(CSVListTitle)

StudentList = []
with open(current_directory_input+TempTXT, "r") as Stufile:
    tempStudentList = Stufile.readlines()

for i in tempStudentList:
    temp = i.strip("\n")
    StudentList.append(temp)

TempStudentSet = set(StudentList)    
   
TempResultSet = set()
for i in StudentList:
    for j in CSVList:
        if str(i) == str(j[0]):
            #print(str(i),str(j[0]))
            ResultList.append([str(j[0]),str(j[1])+"@chc.edu.tw"])
            TempResultSet.add(str(i))
           
ExceptionSet = TempStudentSet - TempResultSet
ExceptionList = list(ExceptionSet)
           
with open(current_directory+"\\Student2ClassRoomStudentAccount.csv","w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerows(ResultList)
print("Student2ClassRoomStudentAccount.csv 檔案已成功寫入!")    

with open(current_directory+"\\Student2ClassRoomStudentAccountException.txt", "w",encoding="utf-8") as file:
    file.write("Excel 找不到的學生帳號如下:\n")
    for i in ExceptionList:
        file.write(str(i)+"\n")
print("Student2ClassRoomStudentAccountException.csv 檔案已成功寫入!")



2025年8月28日 星期四

只要點兩下就能利用彰化縣EIP系統學生帳號CSV產出建立Google Classroom 學生總表

系列文章:
1.只要點兩下就能產出彰化縣Cloud School 學生帳號密碼匯入彰化縣EIP系統學生帳號密碼的CSV
1.https://skjhcreator.blogspot.com/2025/08/cloud-school-eipcsv.html
2.只要點兩下就能利用彰化縣EIP系統學生帳號CSV產出建立Google Classroom 學生總表
2.https://skjhcreator.blogspot.com/2025/08/eipcsvgoogle-classroom.html 
3.
只要點兩下就能利用彰化縣EIP系統學生帳號CSV產出指定學生名單的Google Classroom學生帳號總表
3.https://skjhcreator.blogspot.com/2025/09/eipcsvgoogle-classroom.html

        彰化縣數位學習師生單一帳號系統(EIP=Enterprise Information Portal)於2025年7月7日正式啟用。我要如何利用EIP系統學生帳號CSV來建立Google Classroom 後,將各班的學生加入。或是給老師一張學生帳號總表,讓老師自行建立Classroom,然後將學生加入。由於EIP系統學生帳號只有帳號,沒有後面的@chc.edu.tw。還要想辦法將@chc.edu.tw加入。但問題是用Excel開啟CSV,學生帳號只有數字,在Excel 格式就會跑掉。比方說學生帳號0432579,在Excel,就會變成432579。若用記事本開,學生帳號"0432579",完全沒法用尋找、取代等方式來簡單完成。就要複製@chc.edu.tw,然後一個個貼上。

1.EIP學生帳號下載方式:
下載的學生資料檔名為學校代碼_學生資料_日期時間.CSV,其格式如下:


下載檔案解壓密碼:demo1234
Here is the website where you can download the program and find instructions:
Download。Extraction Password: demo1234
使用教學(Instructional videos):



以下是開發過程與原始碼 (Development process and code):
程式名稱(Program name):pyEIP2GoogleClassRoomStudentAccount.py
程式內容(Code):
import csv
import os

# 取得目前的工作目錄
current_directory = os.getcwd()
# 取得目前的工作目錄內input
current_directory_input = current_directory+"\\input\\"
#  取得工作目錄input內所有檔案名稱
current_directory_input_files = os.listdir(current_directory_input)

# 以副檔名來判斷設定相對應的檔案
for i in current_directory_input_files:
    TempFileName,TempFileExtension = os.path.splitext(i)
    if TempFileExtension == ".csv":
        TempCSVFile = i
    elif TempFileExtension == ".xlsx":
        TempXLSXFile = i
    else:
        TempTXT = i

# 設定CSVList為一個 list
CSVList = []
# 開啟 CSV 檔案
with open(current_directory_input+TempCSVFile, mode='r', encoding='utf-8') as file:
    # 建立 CSV 讀取器
    reader = csv.reader(file)
    # 逐行讀取 CSV 檔案內容
    for row in reader:
        CSVList.append(row)

# CSVListTitle 取得 CSVList[0]
CSVListTitle = CSVList[0]
# 刪除CSVList[0]
CSVList.pop(0)
# 對CSVList 進行排序
CSVList.sort(key=lambda x: x[0])
ResultList = []
ResultList.append(CSVListTitle)

for j in CSVList:
    ResultList.append([str(j[0]),str(j[1])+"@chc.edu.tw"])
               
with open(current_directory+"\\EIP2GoogleClassRoomStudentAccount.csv", mode="w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerows(ResultList)

print("EIP2GoogleClassRoomStudentAccount.csv 檔案已成功寫入!")

資料來源:

只要點兩下就能產出彰化縣Cloud School 學生帳號密碼匯入彰化縣EIP系統學生帳號密碼的CSV

系列文章:
1.只要點兩下就能產出彰化縣Cloud School 學生帳號密碼匯入彰化縣EIP系統學生帳號密碼的CSV
1.https://skjhcreator.blogspot.com/2025/08/cloud-school-eipcsv.html
2.只要點兩下就能利用彰化縣EIP系統學生帳號CSV產出建立Google Classroom 學生總表
2.https://skjhcreator.blogspot.com/2025/08/eipcsvgoogle-classroom.html 
3.
只要點兩下就能利用彰化縣EIP系統學生帳號CSV產出指定學生名單的Google Classroom學生帳號總表
3.https://skjhcreator.blogspot.com/2025/09/eipcsvgoogle-classroom.html

        彰化縣數位學習師生單一帳號系統(EIP=Enterprise Information Portal)於2025年7月7日正式啟用。由於EIP、Cloud School 會進行資料同步,但密碼卻不會一致。身為一個教師,讓學生記多組帳號密碼,那是一件愚蠢的事。換句話說,資訊組長需要手動進行,讓EIP、Cloud School密碼一致。但問題是Cloud School匯出的表為all.xlsx,彰化縣EIP系統學生帳號密碼匯入的格式是CSV。更嚴重的是兩者的欄位格式完全不同、排序也不同。如果一次下載全校學生的資料,需要手動修改的地方就會很多。雖然一年只要做一次,但是想到每年都要做,就讓人覺得心煩。有沒有辦法,讓整件事變得簡單。例如,下載兩個系統的資料後,只要滑鼠點兩下,就產出彰化縣EIP系統學生帳號密碼匯入的CSV。然後一次匯入,就結束。
        以下為問題描述,都是直接用Excel開啟:
1.
Cloud School 學生資料下載方式:

下載的學生資料檔名為all.xlsx,其格式如下:
學生名單從70101開始往下排。
2.
EIP學生帳號下載方式:
下載的學生資料檔名為學校代碼_學生資料_日期時間.CSV,其格式如下:
學生名單從90101開始往下排。學生帳號如上圖的第7個,只知道是4開頭的數字,但不知道是04開頭的,還是4開頭的。若要確認,還要用記事本去開啟CSV,才能夠確認。若是直接用Excel開啟後,直接複製密碼,貼上另一個檔案。儲存之後,學生帳號如上圖的第7個,格式就會被存成4開頭的數字。還要人工一個個檢查。

下載檔案解壓密碼:demo1234
Here is the website where you can download the program and find instructions:
Download。Extraction Password: demo1234
使用教學(Instructional videos):

以下是開發過程與原始碼 (Development process and code):
安裝套件openpyxl
指令(command):
pip install openpyxl
 
程式名稱(Program name):pyCloudSchool_pwd2EIP_pwd.py
程式內容(Code):
import csv
import os
from openpyxl import load_workbook

# 取得目前的工作目錄
current_directory = os.getcwd()
# 取得目前的工作目錄內input
current_directory_input = current_directory+"\\input\\"
#  取得工作目錄input內所有檔案名稱
current_directory_input_files = os.listdir(current_directory_input)

# 以副檔名來判斷設定相對應的檔案
for i in current_directory_input_files:
    TempFileName,TempFileExtension = os.path.splitext(i)
    if TempFileExtension == ".csv":
        TempCSVFile = i
    elif TempFileExtension == ".xlsx":
        TempXLSXFile = i
    else:
        TempTXT = i

# 設定CSVList為一個 list
CSVList = []
# 開啟 CSV 檔案
with open(current_directory_input+TempCSVFile, mode='r', encoding='utf-8') as file:
    # 建立 CSV 讀取器
    reader = csv.reader(file)
    # 逐行讀取 CSV 檔案內容
    for row in reader:
        CSVList.append(row)

# 設定 ExcelList 為一個list
ExcelList = []
# 載入 Excel 文件
workbook = load_workbook(current_directory_input+TempXLSXFile)
# 取得所有工作表名稱
sheet_names = workbook.sheetnames
# 選擇特定工作表
sheet = workbook[sheet_names[0]]
# 讀取工作表內容
for row in sheet.iter_rows(values_only=True):
    ExcelList.append([str(row[0])+str(row[1]).zfill(2)+str(row[2]).zfill(2),row[7]])
# 關閉工作簿
workbook.close()
# CSVListTitle 取得 CSVList[0]
CSVListTitle = CSVList[0]
# 刪除CSVList[0]
CSVList.pop(0)
# 對CSVList 進行排序
CSVList.sort(key=lambda x: x[0])
# ExcelListTitle 取得 CSVList[0]
ExcelListTitle = ExcelList[0]
# 刪除ExcelList[0]
ExcelList.pop(0)
# 對ExcelList 進行排序
ExcelList.sort(key=lambda x: x[0])
# 複製一份ExcelList
CopyExcelList = ExcelList[:]

ResultList = []
ResultList.append(CSVListTitle)

# 當兩者檔案學生名單長度不一致
if len(ExcelList)-len(CSVList) != 0:
    for i in ExcelList:
        for j in CSVList:
            if i[0] == j[0]:
                ResultList.append([str(j[0]),str(j[1]),str(i[1])])
                CopyExcelList.remove(i)
               
    # 印出不一致的學生名單
    #print("印出不一致的學生名單:")                
    #print(CopyExcelList)
    with open(current_directory+"\\CloudSchool_pwd2EIP_pwd_Exception.txt", "w",encoding="utf-8") as file:
        file.write("印出不一致的學生名單:\n")
        for i in CopyExcelList:
            file.write(str(i)+"\n")
    print("CloudSchool_pwd2EIP_pwd_Exception.txt 檔案已成功寫入!")
else: # 當兩者檔案學生名單長度一致
    for i in range(len(CSVList)):
        if ExcelList[i][0] == CSVList[i][0]:
            ResultList.append([str(CSVList[i][0]),str(CSVList[i][1]),str(ExcelList[i][1])])

with open(current_directory+"\\CloudSchool_pwd2EIP_pwd.csv", mode="w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerows(ResultList)

print("CloudSchool_pwd2EIP_pwd.csv檔案已成功寫入!")




資料來源:



2025年8月7日 星期四

laravel 資料庫資料填充工廠入門

一、針對原先學生資料表進行資料的填充
指令:php artisan make:factory StudentFactory --model=Student


就可以在 database\factories\StudentFactory.php

既然要做虛假資料,我們必須知道相對應的欄位
因此,我們輸入
            'name'=>$this->faker->name(),
            'email'=>$this->faker->unique()->safeEmail,
            'age'=>$this->faker->numberBetween(10,25),
            'date_of_birth'=>$this->faker->date('Y-m-d'),
            'gender'=>$this->faker->randomElement(['m','f']),

然後,我們在Models\Student.php,寫入
    use HasFactory;


然後,我們到database\seeders\DatabaseSeeder.php
        Student::factory(100)->create();


接下來,輸入 php artisan db:seed

完成之後,就可以看到

二、如何在資料庫中添加預設數據?
比方說,想要在資料庫中設定所有國家/地區列表
指令: php artisan make:model Countries -mc
在database\migrations\2025_08_11_060449_create_countries_table.php ,寫入
            $table->string('name')->nullable(false);
            $table->string('code')->nullable(false);
如下圖所示:
指令:php artisan migrate
指令:php artisan make:seeder CountriesSeeder
[
    {
        "name": "Afghanistan",
        "code": "AF"
    },
    {
        "name": "Albania",
        "code": "AL"
    },
    {
        "name": "Algeria",
        "code": "DZ"
    },
    {
        "name": "American Samoa",
        "code": "AS"
    },
    {
        "name": "Andorra",
        "code": "AD"
    },
    {
        "name": "Angola",
        "code": "AO"
    },
    {
        "name": "Anguilla",
        "code": "AI"
    },
    {
        "name": "Antarctica",
        "code": "AQ"
    },
    {
        "name": "Antigua and Barbuda",
        "code": "AG"
    },
    {
        "name": "Argentina",
        "code": "AR"
    },
    {
        "name": "Armenia",
        "code": "AM"
    },
    {
        "name": "Aruba",
        "code": "AW"
    },
    {
        "name": "Asia/Pacific Region",
        "code": "AP"
    },
    {
        "name": "Australia",
        "code": "AU"
    },
    {
        "name": "Austria",
        "code": "AT"
    },
    {
        "name": "Azerbaijan",
        "code": "AZ"
    },
    {
        "name": "Bahamas",
        "code": "BS"
    },
    {
        "name": "Bahrain",
        "code": "BH"
    },
    {
        "name": "Bangladesh",
        "code": "BD"
    },
    {
        "name": "Barbados",
        "code": "BB"
    },
    {
        "name": "Belarus",
        "code": "BY"
    },
    {
        "name": "Belgium",
        "code": "BE"
    },
    {
        "name": "Belize",
        "code": "BZ"
    },
    {
        "name": "Benin",
        "code": "BJ"
    },
    {
        "name": "Bermuda",
        "code": "BM"
    },
    {
        "name": "Bhutan",
        "code": "BT"
    },
    {
        "name": "Bolivia",
        "code": "BO"
    },
    {
        "name": "Bonaire, Sint Eustatius and Saba",
        "code": "BQ"
    },
    {
        "name": "Bosnia and Herzegovina",
        "code": "BA"
    },
    {
        "name": "Botswana",
        "code": "BW"
    },
    {
        "name": "Bouvet Island",
        "code": "BV"
    },
    {
        "name": "Brazil",
        "code": "BR"
    },
    {
        "name": "British Indian Ocean Territory",
        "code": "IO"
    },
    {
        "name": "Brunei Darussalam",
        "code": "BN"
    },
    {
        "name": "Bulgaria",
        "code": "BG"
    },
    {
        "name": "Burkina Faso",
        "code": "BF"
    },
    {
        "name": "Burundi",
        "code": "BI"
    },
    {
        "name": "Cambodia",
        "code": "KH"
    },
    {
        "name": "Cameroon",
        "code": "CM"
    },
    {
        "name": "Canada",
        "code": "CA"
    },
    {
        "name": "Cape Verde",
        "code": "CV"
    },
    {
        "name": "Cayman Islands",
        "code": "KY"
    },
    {
        "name": "Central African Republic",
        "code": "CF"
    },
    {
        "name": "Chad",
        "code": "TD"
    },
    {
        "name": "Chile",
        "code": "CL"
    },
    {
        "name": "China",
        "code": "CN"
    },
    {
        "name": "Christmas Island",
        "code": "CX"
    },
    {
        "name": "Cocos (Keeling) Islands",
        "code": "CC"
    },
    {
        "name": "Colombia",
        "code": "CO"
    },
    {
        "name": "Comoros",
        "code": "KM"
    },
    {
        "name": "Congo",
        "code": "CG"
    },
    {
        "name": "Congo, The Democratic Republic of the",
        "code": "CD"
    },
    {
        "name": "Cook Islands",
        "code": "CK"
    },
    {
        "name": "Costa Rica",
        "code": "CR"
    },
    {
        "name": "Croatia",
        "code": "HR"
    },
    {
        "name": "Cuba",
        "code": "CU"
    },
    {
        "name": "Curaçao",
        "code": "CW"
    },
    {
        "name": "Cyprus",
        "code": "CY"
    },
    {
        "name": "Czech Republic",
        "code": "CZ"
    },
    {
        "name": "Côte d'Ivoire",
        "code": "CI"
    },
    {
        "name": "Denmark",
        "code": "DK"
    },
    {
        "name": "Djibouti",
        "code": "DJ"
    },
    {
        "name": "Dominica",
        "code": "DM"
    },
    {
        "name": "Dominican Republic",
        "code": "DO"
    },
    {
        "name": "Ecuador",
        "code": "EC"
    },
    {
        "name": "Egypt",
        "code": "EG"
    },
    {
        "name": "El Salvador",
        "code": "SV"
    },
    {
        "name": "Equatorial Guinea",
        "code": "GQ"
    },
    {
        "name": "Eritrea",
        "code": "ER"
    },
    {
        "name": "Estonia",
        "code": "EE"
    },
    {
        "name": "Ethiopia",
        "code": "ET"
    },
    {
        "name": "Falkland Islands (Malvinas)",
        "code": "FK"
    },
    {
        "name": "Faroe Islands",
        "code": "FO"
    },
    {
        "name": "Fiji",
        "code": "FJ"
    },
    {
        "name": "Finland",
        "code": "FI"
    },
    {
        "name": "France",
        "code": "FR"
    },
    {
        "name": "French Guiana",
        "code": "GF"
    },
    {
        "name": "French Polynesia",
        "code": "PF"
    },
    {
        "name": "French Southern Territories",
        "code": "TF"
    },
    {
        "name": "Gabon",
        "code": "GA"
    },
    {
        "name": "Gambia",
        "code": "GM"
    },
    {
        "name": "Georgia",
        "code": "GE"
    },
    {
        "name": "Germany",
        "code": "DE"
    },
    {
        "name": "Ghana",
        "code": "GH"
    },
    {
        "name": "Gibraltar",
        "code": "GI"
    },
    {
        "name": "Greece",
        "code": "GR"
    },
    {
        "name": "Greenland",
        "code": "GL"
    },
    {
        "name": "Grenada",
        "code": "GD"
    },
    {
        "name": "Guadeloupe",
        "code": "GP"
    },
    {
        "name": "Guam",
        "code": "GU"
    },
    {
        "name": "Guatemala",
        "code": "GT"
    },
    {
        "name": "Guernsey",
        "code": "GG"
    },
    {
        "name": "Guinea",
        "code": "GN"
    },
    {
        "name": "Guinea-Bissau",
        "code": "GW"
    },
    {
        "name": "Guyana",
        "code": "GY"
    },
    {
        "name": "Haiti",
        "code": "HT"
    },
    {
        "name": "Heard Island and Mcdonald Islands",
        "code": "HM"
    },
    {
        "name": "Holy See (Vatican City State)",
        "code": "VA"
    },
    {
        "name": "Honduras",
        "code": "HN"
    },
    {
        "name": "Hong Kong",
        "code": "HK"
    },
    {
        "name": "Hungary",
        "code": "HU"
    },
    {
        "name": "Iceland",
        "code": "IS"
    },
    {
        "name": "India",
        "code": "IN"
    },
    {
        "name": "Indonesia",
        "code": "ID"
    },
    {
        "name": "Iran, Islamic Republic Of",
        "code": "IR"
    },
    {
        "name": "Iraq",
        "code": "IQ"
    },
    {
        "name": "Ireland",
        "code": "IE"
    },
    {
        "name": "Isle of Man",
        "code": "IM"
    },
    {
        "name": "Israel",
        "code": "IL"
    },
    {
        "name": "Italy",
        "code": "IT"
    },
    {
        "name": "Jamaica",
        "code": "JM"
    },
    {
        "name": "Japan",
        "code": "JP"
    },
    {
        "name": "Jersey",
        "code": "JE"
    },
    {
        "name": "Jordan",
        "code": "JO"
    },
    {
        "name": "Kazakhstan",
        "code": "KZ"
    },
    {
        "name": "Kenya",
        "code": "KE"
    },
    {
        "name": "Kiribati",
        "code": "KI"
    },
    {
        "name": "Korea, Republic of",
        "code": "KR"
    },
    {
        "name": "Kuwait",
        "code": "KW"
    },
    {
        "name": "Kyrgyzstan",
        "code": "KG"
    },
    {
        "name": "Laos",
        "code": "LA"
    },
    {
        "name": "Latvia",
        "code": "LV"
    },
    {
        "name": "Lebanon",
        "code": "LB"
    },
    {
        "name": "Lesotho",
        "code": "LS"
    },
    {
        "name": "Liberia",
        "code": "LR"
    },
    {
        "name": "Libyan Arab Jamahiriya",
        "code": "LY"
    },
    {
        "name": "Liechtenstein",
        "code": "LI"
    },
    {
        "name": "Lithuania",
        "code": "LT"
    },
    {
        "name": "Luxembourg",
        "code": "LU"
    },
    {
        "name": "Macao",
        "code": "MO"
    },
    {
        "name": "Madagascar",
        "code": "MG"
    },
    {
        "name": "Malawi",
        "code": "MW"
    },
    {
        "name": "Malaysia",
        "code": "MY"
    },
    {
        "name": "Maldives",
        "code": "MV"
    },
    {
        "name": "Mali",
        "code": "ML"
    },
    {
        "name": "Malta",
        "code": "MT"
    },
    {
        "name": "Marshall Islands",
        "code": "MH"
    },
    {
        "name": "Martinique",
        "code": "MQ"
    },
    {
        "name": "Mauritania",
        "code": "MR"
    },
    {
        "name": "Mauritius",
        "code": "MU"
    },
    {
        "name": "Mayotte",
        "code": "YT"
    },
    {
        "name": "Mexico",
        "code": "MX"
    },
    {
        "name": "Micronesia, Federated States of",
        "code": "FM"
    },
    {
        "name": "Moldova, Republic of",
        "code": "MD"
    },
    {
        "name": "Monaco",
        "code": "MC"
    },
    {
        "name": "Mongolia",
        "code": "MN"
    },
    {
        "name": "Montenegro",
        "code": "ME"
    },
    {
        "name": "Montserrat",
        "code": "MS"
    },
    {
        "name": "Morocco",
        "code": "MA"
    },
    {
        "name": "Mozambique",
        "code": "MZ"
    },
    {
        "name": "Myanmar",
        "code": "MM"
    },
    {
        "name": "Namibia",
        "code": "NA"
    },
    {
        "name": "Nauru",
        "code": "NR"
    },
    {
        "name": "Nepal",
        "code": "NP"
    },
    {
        "name": "Netherlands",
        "code": "NL"
    },
    {
        "name": "Netherlands Antilles",
        "code": "AN"
    },
    {
        "name": "New Caledonia",
        "code": "NC"
    },
    {
        "name": "New Zealand",
        "code": "NZ"
    },
    {
        "name": "Nicaragua",
        "code": "NI"
    },
    {
        "name": "Niger",
        "code": "NE"
    },
    {
        "name": "Nigeria",
        "code": "NG"
    },
    {
        "name": "Niue",
        "code": "NU"
    },
    {
        "name": "Norfolk Island",
        "code": "NF"
    },
    {
        "name": "North Korea",
        "code": "KP"
    },
    {
        "name": "North Macedonia",
        "code": "MK"
    },
    {
        "name": "Northern Mariana Islands",
        "code": "MP"
    },
    {
        "name": "Norway",
        "code": "NO"
    },
    {
        "name": "Oman",
        "code": "OM"
    },
    {
        "name": "Pakistan",
        "code": "PK"
    },
    {
        "name": "Palau",
        "code": "PW"
    },
    {
        "name": "Palestinian Territory, Occupied",
        "code": "PS"
    },
    {
        "name": "Panama",
        "code": "PA"
    },
    {
        "name": "Papua New Guinea",
        "code": "PG"
    },
    {
        "name": "Paraguay",
        "code": "PY"
    },
    {
        "name": "Peru",
        "code": "PE"
    },
    {
        "name": "Philippines",
        "code": "PH"
    },
    {
        "name": "Pitcairn Islands",
        "code": "PN"
    },
    {
        "name": "Poland",
        "code": "PL"
    },
    {
        "name": "Portugal",
        "code": "PT"
    },
    {
        "name": "Puerto Rico",
        "code": "PR"
    },
    {
        "name": "Qatar",
        "code": "QA"
    },
    {
        "name": "Reunion",
        "code": "RE"
    },
    {
        "name": "Romania",
        "code": "RO"
    },
    {
        "name": "Russian Federation",
        "code": "RU"
    },
    {
        "name": "Rwanda",
        "code": "RW"
    },
    {
        "name": "Saint Barthélemy",
        "code": "BL"
    },
    {
        "name": "Saint Helena",
        "code": "SH"
    },
    {
        "name": "Saint Kitts and Nevis",
        "code": "KN"
    },
    {
        "name": "Saint Lucia",
        "code": "LC"
    },
    {
        "name": "Saint Martin",
        "code": "MF"
    },
    {
        "name": "Saint Martin",
        "code": "MF"
    },
    {
        "name": "Saint Pierre and Miquelon",
        "code": "PM"
    },
    {
        "name": "Saint Vincent and the Grenadines",
        "code": "VC"
    },
    {
        "name": "Samoa",
        "code": "WS"
    },
    {
        "name": "San Marino",
        "code": "SM"
    },
    {
        "name": "Sao Tome and Principe",
        "code": "ST"
    },
    {
        "name": "Saudi Arabia",
        "code": "SA"
    },
    {
        "name": "Senegal",
        "code": "SN"
    },
    {
        "name": "Serbia",
        "code": "RS"
    },
    {
        "name": "Serbia and Montenegro",
        "code": "CS"
    },
    {
        "name": "Seychelles",
        "code": "SC"
    },
    {
        "name": "Sierra Leone",
        "code": "SL"
    },
    {
        "name": "Singapore",
        "code": "SG"
    },
    {
        "name": "Sint Maarten",
        "code": "SX"
    },
    {
        "name": "Slovakia",
        "code": "SK"
    },
    {
        "name": "Slovenia",
        "code": "SI"
    },
    {
        "name": "Solomon Islands",
        "code": "SB"
    },
    {
        "name": "Somalia",
        "code": "SO"
    },
    {
        "name": "South Africa",
        "code": "ZA"
    },
    {
        "name": "South Georgia and the South Sandwich Islands",
        "code": "GS"
    },
    {
        "name": "South Sudan",
        "code": "SS"
    },
    {
        "name": "Spain",
        "code": "ES"
    },
    {
        "name": "Sri Lanka",
        "code": "LK"
    },
    {
        "name": "Sudan",
        "code": "SD"
    },
    {
        "name": "Suriname",
        "code": "SR"
    },
    {
        "name": "Svalbard and Jan Mayen",
        "code": "SJ"
    },
    {
        "name": "Swaziland",
        "code": "SZ"
    },
    {
        "name": "Sweden",
        "code": "SE"
    },
    {
        "name": "Switzerland",
        "code": "CH"
    },
    {
        "name": "Syrian Arab Republic",
        "code": "SY"
    },
    {
        "name": "Taiwan",
        "code": "TW"
    },
    {
        "name": "Tajikistan",
        "code": "TJ"
    },
    {
        "name": "Tanzania, United Republic of",
        "code": "TZ"
    },
    {
        "name": "Thailand",
        "code": "TH"
    },
    {
        "name": "Timor-Leste",
        "code": "TL"
    },
    {
        "name": "Togo",
        "code": "TG"
    },
    {
        "name": "Tokelau",
        "code": "TK"
    },
    {
        "name": "Tonga",
        "code": "TO"
    },
    {
        "name": "Trinidad and Tobago",
        "code": "TT"
    },
    {
        "name": "Tunisia",
        "code": "TN"
    },
    {
        "name": "Turkey",
        "code": "TR"
    },
    {
        "name": "Turkmenistan",
        "code": "TM"
    },
    {
        "name": "Turks and Caicos Islands",
        "code": "TC"
    },
    {
        "name": "Tuvalu",
        "code": "TV"
    },
    {
        "name": "Uganda",
        "code": "UG"
    },
    {
        "name": "Ukraine",
        "code": "UA"
    },
    {
        "name": "United Arab Emirates",
        "code": "AE"
    },
    {
        "name": "United Kingdom",
        "code": "GB"
    },
    {
        "name": "United States",
        "code": "US"
    },
    {
        "name": "United States Minor Outlying Islands",
        "code": "UM"
    },
    {
        "name": "Uruguay",
        "code": "UY"
    },
    {
        "name": "Uzbekistan",
        "code": "UZ"
    },
    {
        "name": "Vanuatu",
        "code": "VU"
    },
    {
        "name": "Venezuela",
        "code": "VE"
    },
    {
        "name": "Vietnam",
        "code": "VN"
    },
    {
        "name": "Virgin Islands, British",
        "code": "VG"
    },
    {
        "name": "Virgin Islands, U.S.",
        "code": "VI"
    },
    {
        "name": "Wallis and Futuna",
        "code": "WF"
    },
    {
        "name": "Western Sahara",
        "code": "EH"
    },
    {
        "name": "Yemen",
        "code": "YE"
    },
    {
        "name": "Zambia",
        "code": "ZM"
    },
    {
        "name": "Zimbabwe",
        "code": "ZW"
    },
    {
        "name": "Åland Islands",
        "code": "AX"
    }
]
接下來,利用"取代",將":" 取代為 "=>":
接下來,利用"取代",將"{" 取代為 "[",與將"}" 取代為 "]":
特別注意:
最後,還需要增加

只要點兩下就能利用彰化縣EIP系統學生帳號CSV產出指定學生名單的Google Classroom帳號總表

系列文章: 1. 只要點兩下就能產出彰化縣Cloud School 學生帳號密碼匯入彰化縣EIP系統學生帳號密碼的CSV 1. https://skjhcreator.blogspot.com/2025/08/cloud-school-eipcsv.html 2. 只要點兩下就能...