
Security News
curl Shuts Down Bug Bounty Program After Flood of AI Slop Reports
A surge of AI-generated vulnerability reports has pushed open source maintainers to rethink bug bounties and tighten security disclosure processes.
google-apps-script-better-logger
Advanced tools
On google apps script use better logger. this package just a Better-Logger type assist.
一個比原生 console.log 好一些的 Logger
可以用 sheet、Stackdriver Logging 紀錄,還可以用 mail 通知
A Logger which better than built-in console.log .
You can use sheet, Stackdriver Logging records, you can also use mail to notify.
打開 gs 編輯頁面
-> "資源"
-> "程式庫"
-> 將 1R4kOenBr5gSIcxUbCYegM4pStj0JzjXdA2jryW5s9J2Phg_ebaykmEgo 貼上輸入框
-> "新增"
-> 選擇最後版本(記得阿 不然儲存不了)
-> "儲存"~
Open Script Editor.
-> Resource
-> Library
-> Paste Script ID 1R4kOenBr5gSIcxUbCYegM4pStj0JzjXdA2jryW5s9J2Phg_ebaykmEgo to box
-> Add library
-> select lastest version and save
npm i google-apps-script-better-logger
⚠️npm 安裝僅提供輸入提示,並無法在 local 端執行!⚠️
⚠️npm install only support IDE input prompt, can't run code on local!⚠️

code:
function t2() {
console.log("---------------------");
var logger = new BetterLogger.BetterLogger();
var levels = logger.levels;
logger.set_level(logger.levels.NOTICE);
console.log(logger.get_config());
// 有2種方式可以log 這是第1種
// have 2 method , this 1
logger.log(levels.EMERGENCY, "這是測試 EMERGENCY !!!!!");
logger.log(levels.ALERT, "這是測試 ALERT !!!!!");
logger.log(levels.CRITICAL, "這是測試 CRITICAL !!!!!");
logger.log(levels.ERROR, "這是測試 ERROR !!!!!");
logger.log(levels.WARNING, "這是測試 WARNING !!!!!");
logger.log(levels.INFO, "這是測試 INFO !!!!!");
logger.log(levels.DEBUG, "這是測試 DEBUG !!!!!");
logger.log(levels.NOTICE, "這是測試 NOTICE !!!!!");
// 這是第2種
// this 2
logger.emergency("這是測試 EMERGENCY =====");
logger.alert("這是測試 ALERT =====");
logger.critical("這是測試 CRITICAL =====");
logger.error("這是測試 ERROR =====");
logger.warning("這是測試 WARNING =====");
logger.info("這是測試 INFO =====");
logger.debug("這是測試 DEBUG =====");
logger.notice("這是測試 NOTICE =====");
}
result:

code:
function t1() {
console.log("---------------------");
var logger = new BetterLogger.BetterLogger();
var levels = logger.levels;
// 設定要 log 的 sheet page
// set need to log sheet page
logger.set_sheet_id("1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4");
// 啟動 sheet 紀錄
// Turn on sheet log
logger.set_use_sheet(true);
logger.set_level(levels.NOTICE);
console.log(logger.get_config());
logger.emergency("這是測試 EMERGENCY =====");
logger.alert("這是測試 ALERT =====");
logger.critical("這是測試 CRITICAL =====");
logger.error("這是測試 ERROR =====");
logger.warning("這是測試 WARNING =====");
logger.info("這是測試 INFO =====");
logger.debug("這是測試 DEBUG =====");
logger.notice("這是測試 NOTICE =====");
}
result:

code:
function t3() {
console.log("---------------------");
var logger = new BetterLogger.BetterLogger();
console.log(logger.get_config());
logger.set_level(logger.levels.NOTICE);
// 啟動 mail 通知 (在沒有特別設定的情況下,只有 EMERGENCY、ALERT、NOTICE 3個會通知)
// Turn on mail notice, if you not change setting, only EMERGENCY、ALERT、NOTICE will notice
logger.set_use_mail(true);
// 這裡填寫你的程式名稱 寄信時當作標題用
// there fill in the name of your program , will use it as the title when sending a mail.
logger.application = "這裡填你的應用程式名稱";
logger.emergency("這是測試 EMERGENCY =====");
logger.alert("這是測試 ALERT =====");
logger.critical("這是測試 CRITICAL =====");
logger.error("這是測試 ERROR =====");
logger.warning("這是測試 WARNING =====");
logger.info("這是測試 INFO =====");
logger.debug("這是測試 DEBUG =====");
logger.notice("這是測試 NOTICE =====");
}
result:

| 功能 Methods | 說明 Explanation |
|---|---|
| set_config | 一次設定 Logger 所有參數。 Set Logger all config |
| set_logfmt | 設定 Logger 的時間格式 Set Logger time format |
| set_GMT | 設定 Logger 時區,單位 GMT Set Logger time zone, unit GMT |
| set_use_console | 設定是否啟用 Stackdriver Logging,預設開啟 Set whether to enable Stackdriver Logging, the default is on |
| set_use_sheet | 設定是否啟用 sheet,預設關閉 Set whether to enable sheet, the default is off |
| set_sheet_id | 設定要使用的 sheet id Set the sheet id |
| set_sheet_page_name | 設定要使用的 sheet page,預設為 'log' Set the sheet page to use, the default is 'log' |
| set_sheet_log_slice | 設定 log 進 sheet 時,要不要分欄輸入(A 欄、B 欄...) When log into the sheet, do you want to enter it in a columns or separate(Column A, Column B...) |
| set_level | 設定紀錄的等級 Set the record level |
| set_EMERGENCY_color | 設定 EMERGENCY 紀錄在 sheet 時的單元格顏色 Set the cell color when EMERGENCY is recorded in sheet |
| set_ALERT_color | 設定 ALERT 紀錄在 sheet 時的單元格顏色 Set the cell color when ALERT is recorded in sheet |
| set_CRITICAL_color | 設定 CRITICAL 紀錄在 sheet 時的單元格顏色 Set the cell color when CRITICAL is recorded in sheet |
| set_ERROR_color | 設定 ERROR 紀錄在 sheet 時的單元格顏色 Set the cell color when ERROR is recorded in sheet |
| set_WARNING_color | 設定 WARNING 紀錄在 sheet 時的單元格顏色 Set the cell color when WARNING is recorded in sheet |
| set_INFO_color | 設定 INFO 紀錄在 sheet 時的單元格顏色 Set the cell color when INFO is recorded in sheet |
| set_DEBUG_color | 設定 DEBUG 紀錄在 sheet 時的單元格顏色 Set the cell color when DEBUG is recorded in sheet |
| set_NOTICE_color | 設定 NOTICE 紀錄在 sheet 時的單元格顏色 Set the cell color when NOTICE is recorded in sheet |
| set_use_mail | 設定是否要寄 email Set whether to send email |
| set_EMERGENCY_mail | 設定遇到 log 等級 EMERGENCY 時,是否要寄送 mail,預設 true Set whether to send mail when encountering log level EMERGENCY,the default is true |
| set_ALERT_mail | 設定遇到 log 等級 ALERT 時,是否要寄送 mail,預設 true Set whether to send mail when encountering log level ALERT,the default is true |
| set_CRITICAL_mail | 設定遇到 log 等級 CRITICAL 時,是否要寄送 mail,預設 false Set whether to send mail when encountering log level CRITICAL,the default is false |
| set_ERROR_mail | 設定遇到 log 等級 ERROR 時,是否要寄送 mail,預設 false Set whether to send mail when encountering log level ERROR,the default is false |
| set_WARNING_mail | 設定遇到 log 等級 WARNING 時,是否要寄送 mail,預設 false Set whether to send mail when encountering log level WARNING,the default is false |
| set_INFO_mail | 設定遇到 log 等級 INFO 時,是否要寄送 mail,預設 false Set whether to send mail when encountering log level INFO,the default is false |
| set_DEBUG_mail | 設定遇到 log 等級 DEBUG 時,是否要寄送 mail,預設 false Set whether to send mail when encountering log level DEBUG,the default is false |
| set_NOTICE_mail | 設定遇到 log 等級 NOTICE 時,是否要寄送 mail,預設 true Set whether to send mail when encountering log level NOTICE,the default is true |
| set_application | 設定程式名稱 set application name |
| log | 紀錄 log 用 For logging |
| emergency | 使用 emergency log use emergency log |
| alert | 使用 alert log use alert log |
| critical | 使用 critical log use critical log |
| error | 使用 error log use error log |
| warning | 使用 warning log use warning log |
| info | 使用 info log use info log |
| debug | 使用 debug log use debug log |
| notice | 使用 notice log use notice log |
設定 Logger。
set_config(sheet_id, sheet_page_name, logfmt, GMT, datefmt, level);
void
| name | type | Description |
|---|---|---|
| sheet_id | string | https://docs.google.com/spreadsheets/d/ 1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4 /edit 網址中的這一段 (介於 "d/" 跟 "/edit" 之間) |
| sheet_page_name | string | 使用 sheet 中的哪個 page,預設是'log' |
| logfmt | string | logger 的 log 格式 |
| GMT | string | GMT 時間 |
| datefmt | string | logger 的 log 格式中 時間的紀錄方式 |
| level | string | number | Levels | 紀錄的等級,可以接受 'EMERGENCY'、60、logger.levels.NOTICE 這 3 種方式 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_config(
"xxx123",
"log_2020/07/13",
"%{datefmt} %{levelname} : %{message}",
"GMT+0",
"yyyy.MM.dd HH:mm:ss",
"INFO"
);
console.log(logger.get_config());
}
設定 log 格式。
set_logfmt(logfmt);
void
| name | type | Description |
|---|---|---|
| logfmt | string | logger 的 log 格式 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_logfmt("%{datefmt} %{levelname} : %{message}");
console.log(logger.get_config());
}
設定 Logger GMT 時區。
set_GMT(GMT);
void
| name | type | Description |
|---|---|---|
| GMT | string | GMT 時區 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_GMT("GTM+8");
console.log(logger.get_config());
}
用來開關 Stackdriver Logging,預設 true。
set_use_console(boolean);
void
| name | type | Description |
|---|---|---|
| boolean | boolean | true or false |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_use_console(false);
console.log(logger.get_config());
}
用來開關 sheet log,預設 false。
set_use_sheet(boolean);
void
| name | type | Description |
|---|---|---|
| boolean | boolean | true or false |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_use_sheet(true);
console.log(logger.get_config());
}
用來設定 sheet id。
set_sheet_id(id);
void
| name | type | Description |
|---|---|---|
| id | string | https://docs.google.com/spreadsheets/d/ 1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4 /edit 網址中的這一段 (介於 "d/" 跟 "/edit" 之間) |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_sheet_id("1lqlqztKroBwDZ--VxoYN9Hh_BuwOzbdbowltI7yf2N4");
console.log(logger.get_config());
}
用來設定 sheet page name。
如果沒有在 sheet 中發現指定的 page 名稱,則會自己新增一個。
set_sheet_page_name(page_name);
void
| name | type | Description |
|---|---|---|
| page_name | string | 使用 sheet 中的哪個 page,預設是'log' |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_sheet_page_name("log_2020/07/13");
console.log(logger.get_config());
}
設定 log 進 sheet 時,要不要分欄輸入(A 欄、B 欄...)
如果是 false 就只輸出 1 欄。
set_sheet_log_slice(boolean);
void
| name | type | Description |
|---|---|---|
| boolean | boolean | 設定 log 進 sheet 時,要不要分欄輸入(A 欄、B 欄...) |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_sheet_log_slice(true);
console.log(logger.get_config());
}
設定 log level。
set_level(level);
void
| name | type | Description |
|---|---|---|
| level | string | number | Levels | 紀錄的等級,可以接受 'EMERGENCY'、60、logger.levels.NOTICE 這 3 種方式 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_level("WARNING");
console.log(logger.get_config());
}
設定 XXX 在 sheet log 時的顏色。
set_XXX_color(color);
void
| name | type | Description |
|---|---|---|
| color | string | 十六進位字串顏色 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_ALERT_color("#ffff00");
logger.set_level(50);
logger.alert("顏色 == #ffff00");
}
設定是否在 log 時寄送 eamil。
預設是 false .
set_use_mail(boolean);
void
| name | type | Description |
|---|---|---|
| boolean | boolean | true of false |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_use_mail(true);
logger.alert("寄送 Email!");
}
設定指定 log level 是否寄送 Email。 如果未指定,則只有 EMERGENCY、ALERT、NOTICE 這三個會寄送。詳見Levels
set_XXX_mail(boolean);
void
| name | type | Description |
|---|---|---|
| boolean | boolean | true of false |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_ERROR_mail(true);
logger.error("寄送 email!");
}
設定指定寄送 Email 時,標題的名稱。 預設 "Google_Apps_Script_Logger"。
set_application(subject);
void
| name | type | Description |
|---|---|---|
| subject | string | 寄信時的標題名稱 |
function t4() {
var logger = new BetterLogger.BetterLogger();
logger.set_application("minecraft");
logger.notice("伺服器重啟成功!");
}
logfmt 預設是 "%{datefmt} - %{user} - %{levelname} : %{message}"
| 名稱 | 說明 |
|---|---|
| datefmt | 是時間格式化後的字串,詳見datefmt |
| user | 為使用這個 Logger 的 google 帳號 (xxx@gmail.com) |
| levelname | 是 log 的等級,詳見levels |
| message | 是你想記錄的訊息文字 |
datefmt 預設是 "yyyy.MM.dd HH:mm:ss z" 詳細請看 SimpleDateFormat
| 名稱 | 等級 | 說明 | 預設是否寄 email |
|---|---|---|---|
| EMERGENCY | 70 | 緊急 | ✓ |
| ALERT | 60 | 快訊 | ✓ |
| CRITICAL | 50 | 重要 | ✖ |
| ERROR | 40 | 錯誤 | ✖ |
| WARNING | 30 | 警告 | ✖ |
| INFO | 20 | 資訊 | ✖ |
| DEBUG | 10 | 除錯 | ✖ |
| NOTICE | 0 | 通知 | ✓ |
FAQs
On google apps script use better logger. this package just a Better-Logger type assist.
We found that google-apps-script-better-logger demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
A surge of AI-generated vulnerability reports has pushed open source maintainers to rethink bug bounties and tighten security disclosure processes.

Product
Scan results now load faster and remain consistent over time, with stable URLs and on-demand rescans for fresh security data.

Product
Socket's new Alert Details page is designed to surface more context, with a clearer layout, reachability dependency chains, and structured review.