星期六, 7月 04, 2026

[GAS] 服務配額-MailApp.getRemainingDailyQuota

之前以為 Google Apps Script 服務配額是沒有內建函數可以查詢,上課時老師提到可寄發 mail 數量是可以查詢的,查發現是透過 getRemainingDailyQuota() 來取得,官方文件說明
Returns the number of recipients you can send emails to for the rest of the day. The returned value is valid for the current execution and might vary between executions.
function sendEmailQuotaQuery()
{
  console.log(MailApp.getRemainingDailyQuota());
}

星期三, 7月 01, 2026

[Forms] 顯示連結以傳送更多回覆

上課時聽到老師介紹才發現原來表單送出後,點選 [提交其他回應] 連結可以重新開始,該連結是可以取消,一直以為是常駐功能

設定 => 簡報 => 顯示連結以傳送更多回覆

表單送出後畫面,畫面上會有 [提交其他回應] 連結

星期日, 6月 28, 2026

[SSRS] 框線

之前都是在屬性視窗內設定框線,這次無意中進入 IDE 內進行設定,發現原來框線 IDE 設定是有操作順序,以矩形為例來記錄

框線 IDE 設定

矩形 => 滑鼠右鍵 => 矩形屬性 => 框線
上圖橘框內的樣式、寬度、色彩,要先設定後,選擇黃框外框會套用該設定,而黃框外框選擇 [無] 後離開的話,會一併恢復橘框內的三個設定預設值。

屬性視窗設定

點選控件後理論上右側屬性視窗會自動出現,或是按 F4 快捷鍵
屬性視窗內設定會比較直覺,設定就是直接套用該效果

星期六, 6月 27, 2026

[SSRS] 在頁首或頁尾中顯示每筆資料

在 SSRS 報表內,資料來源為 DataSet 的話,要顯示每一筆資料必須把資料放在報表主體 (body) 內搭配清單 (List) 或 Tablix 等控件來顯示,而頁首、頁尾只能插入文字方塊 (TextBox)、線條、矩形、影像 (Image) 這四種控件,直接從 DataSet 字串欄位拉進頁首、頁尾的話,文字方塊值會有彙總運算式如下
=First(Fields!Data.Value, "DataSet 名稱")
運算式會自帶 First() 並只顯示第一筆資料的欄位資料,跳至其他分頁的話,該文字方塊不會跟著變化,有嘗試把 First() 移除,SSRS 雖然不會報錯,但仍然維持相同結果。

在官方文章 - 在頁首或頁尾中顯示變數資料 有提到繞道做法,必須在頁首、頁尾上透過 ReportItems (Report 控件) 來顯示 DataSet 內的每一筆資料、圖片

資料來源 DataSet

只塞入兩筆資料為別為 1234567890、ABCDEFGHIJ,在 AP 端是透過 Xing 套件把這兩筆資料轉成 Barcode 並用 byte[] 來儲存
public class ReportModel
{
        public string Data { get; set; }
        public byte[] Barcode { get; set; }
}

報表 layout 設計

黃框為頁首、綠框為 Body

在頁首、頁尾顯示文字

在頁首、頁尾內插入 TextBox 後,值設定值直接指定 Boby 內的 txtData 控件,設定如下
=ReportItems!txtData.Value
從下圖執行結果內的頁碼可以發現,跳至第二筆資料後,直接抓 txtData 控件可以顯示第二筆資料 ABCDEFGHIJ

在頁首、頁尾顯示圖片

ReportItems 是 TextBox 控件集合,不包含 Image 控件,沒有辦法像文字一樣,直接指定控件,所以圖片要特別處理,首先要在 Body 插入 TextBox (命名為 txtHiddenBarcode),並把圖片轉為字串如下
=Convert.ToBase64String(Fields!Barcode.Value)
頁首、頁尾的 Image 控件,則是抓取 ReportItems 的 txtHiddenBarcode 值再透過 Convert.FromBase64String 轉回圖片來顯示
=Convert.FromBase64String(ReportItems!txtHiddenBarcode.Value)
實務上使用會把 txtHiddenBarcode 隱藏起來,畢竟它只是傳遞資料媒介

星期一, 6月 22, 2026

[GAS] Goolge Cloud Logging

Google Apps Script 預設會自動建立一個 Google Cloud 專案 (預設專案),可以變更為自行建立的標準 Google Cloud 專案 (標準專案),一般來說使用預設專案就行,實務上有 Log 保存和查詢需求才會使用標準專案,一旦轉成標準專案後,無法再切回預設專案

GAS 專案 => 專案設定 => Google Cloud Platform (GCP) 專案,就可以看見 GCP 為預設
按下上圖的 [變更專案] 按鈕後會出現標準專案的設定說明

點選步驟 1. 的 [這裡] 連結,會跳轉至 GCP 平台上,建立一個標準專案並取得專案編號
在 GAS 專案內設定 GCP 專案編號,會出現 [如要變更專案,請設定 OAuth 同意畫面。設定 OAuth 同意畫面詳細資料] 的錯誤訊息
按下 [OAuth 同意畫面詳細資料] 連結後,會跳至 GCP 設定畫面
按下 [開始] 進入專案設定
應用程式資訊,請輸入 [應用程式名稱] 和 [使用者支援電子郵件]
目標對象,請選擇 [外部],該筆記 GAS 和 GCP 都是使用相同帳號,就不需要特別去設定測試使用者
聯絡資訊,請輸入電子郵件地址
完成,需要勾選同意相關條款
回到 GAS 選項內就可以把 GCP 專案編號設定上去,從下圖就可以變成標準專案

在 GAS 專案內的 gs Code 同時有 Logger 和 console 輸出並執行
function Log2GCP() {
  Logger.log("Logger.log 輸出文字");
  console.info("console.Info 輸出文字");
}

在執行項目內可以看見剛剛執行留下的 Log

點選上圖的 [前往 CLOUD 紀錄查看] 會自動跳轉至 Logs Exploer 去,不論使用 Logger 或 console 都可以把 log 送上 GCP Logging 去