顯示具有 江湖一點訣 標籤的文章。 顯示所有文章
顯示具有 江湖一點訣 標籤的文章。 顯示所有文章

2024年4月14日 星期日

Gg / 使用GoogleCharts快速製作QrCode 替代方案 QuickChart

原本在 Gg / 使用GoogleCharts快速製作QrCode 所使用的api

由於google正式關閉了 https://chart.googleapis.com

所以也就無法用來生成Qr Code

因此改用 https://quickchart.io/ 的api

基本用法

https://quickchart.io/qr?text=Hello world

詳細的參數設定可以參考官網的說明

也可以直接沿用 https://chart.googleapis.com的參數設定

例如:https://chart.googleapis.com/chart?chs=120x120&cht=qr&chld=M|3&chl=https://inservice.edu.tw/NAPP/CourseView.aspx?cid=2861727 

直接改成:https://quickchart.io/chart?chs=120x120&cht=qr&chld=M|3&chl=https://inservice.edu.tw/NAPP/CourseView.aspx?cid=2861727

此外,在 Gg / 下載在GoogleCharts製作QrCode的圖檔 的程式碼

修改如下

  1. function myQR() {
  2. //課程代碼
  3. var cId = '2861727';
  4. var cText = 'https://inservice.edu.tw/NAPP/CourseView.aspx?cid='+cId;

  5. //QuickChart api
  6. var url = 'https://quickchart.io/qr?text='+cText;

  7. //fetch連線
  8. var hData = UrlFetchApp.fetch(url);

  9. //伺服器連線情況代碼
  10. var rowRe = hData.getResponseCode();
  11. Logger.log(rowRe);
  12. //Logger.log(hData.getContent());

  13. if (rowRe == '200'){
  14. //#1
  15. var fileBlob = hData.getBlob().getAs('image/png').setName('研習代碼-' + cId + '.png');
  16. fileBlob= DriveApp.createFile(fileBlob);

  17. //#2
  18. //var fileBlob = Utilities.newBlob(hData.getContent(), 'image/png', '研習代碼-' + cId + '.png');
  19. //fileBlob= DriveApp.createFile(fileBlob);

  20. Logger.log('fetch 成功')
  21. Logger.log(fileBlob.getDownloadUrl());

  22. }else{
  23. Logger.log('fetch 失敗');
  24. }
  25. }

2023年9月2日 星期六

Canva / 將Canva建置的網頁嵌入網站

Canva真是行政工作的好夥伴 
可以設計海報也可以建置簡易的網站 
建置出來的網站可以發佈成有一個自訂名稱的網域 https://xxxxxxxxxxxxx.my.canva.site 
之後新建的網站則是隸屬於這個網址下的子網頁 https://xxxxxxxxxxxxx.my.canva.site/zzzzzzzzz 
免費帳號可以有5個網站空間 (只是不知道一個網站內可以有多少個分頁) 
此外,也可以將網頁內容嵌入之其他網站之中 
例如:google協作平台、wordpress網站

2022年7月8日 星期五

Excel / 如何批次新增檔案資料夾-VBA +Excel 資料表 修改版

這是 Excel / 如何批次新增檔案資料夾-VBA +Excel 資料表 的修改版

因為是有人從粉絲頁傳訊息給我 

問怎麼改成在不同電腦,不需要修改路徑,也可以使用  

所以也順便更新紀錄在這裡

原始版本是在自己的電腦上執行

因此路徑都是固定的

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Public Sub 新增檔案資料夾()

  r = Worksheets(1).Range("A1").End(xlDown).Row
  
  out_path = "C:\Users\trico\Desktop\123\"
    For i = 2 To r
        n = Range("A" & i)
        c = Range("B" & i)
        s = Range("C" & i)
        
        file_name = n & "-" & c & "-" & s
            MkDir out_path & file_name
    
    Next
    
End Sub

 

如果要改成變動的路徑

就需要抓取電腦的桌面資料夾路徑

這可以透過  Environ( “USERPROFILE“) 函式來取得當前電腦的使用者資料夾 C:\Users\xxx

再配合字串連結 \Desktop 就可以產生當前使用者的桌面資料夾路徑

以下是修改後的程式碼

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Sub 新增資料夾2()

  r = Worksheets(1).Range("A1").End(xlDown).Row
  
  filepath = Environ("USERPROFILE")
  
  MkDir filepath & "\Desktop\Create Folder"
  
  Application.Wait (Now + TimeValue("00:00:01"))
  
  out_path = filepath & "\Desktop\Create Folder\"

    For i = 2 To r
        n = Range("A" & i)
        c = Range("B" & i).Value
'        s = Range("C" & i)
        
'        fiel_name = n & "-" & c & "-" & s
        file_name = n & " - " & c
            MkDir out_path & file_name
    
    Next
    
End Sub

也增加了一些新的設定

例如:

#7 直接產生存放新增資料夾的資料夾

#9 讓程式暫停1秒,避免程式出錯

之後,可以再進一步優化程式碼

例如增加判斷式,來判斷是否已經有重複的資料夾

 

參考資料

Environ 函數

環境變數 (Environment Variable)

2022年6月14日 星期二

Gg / 如何製作Google Meet背景以及合併列印文字

Google Meet可以變更背景及套用視覺效果

除了內建的圖檔之外,網路上也有很多免費的圖檔可供使用

前陣子辦理研習

在籌備會議的時候,有位講師突然提到:會提供背板給我們使用嗎??

於是就開始想辦法

其實在Google Meet提供這個功能之後,我就有嘗試自己製作

只是覺得自己的美感太差勁、也沒有設計感

剛好另一個計畫最近辦理研習,特別找專業人員來設計

於是,參考了專業人員編排方式與使用色彩的方式

試著製作研習專用的背板

在查詢了Google的說明資料,自訂背景的解析度需求是1920x1080p 的jpeg圖檔

換算比例是16:9

因為我沒有專業的美工軟體,我使用PowerPoint來製作背景圖檔

在投影片大小設定為橫向 寬螢幕即可

由於PowerPoint另存新檔-檔案類型(jpeg)的預設解析度只有96dpi

大概只能轉出1280 × 720解析度的圖檔

因此參考Office疑難排解的說明新增登錄檔修改成300dpi

這樣就可以輸出4000 × 2250解析度的圖檔

不過其實150dpi就足夠了,也可以省去縮小圖檔的流程

如果只是要製作統一的背板,到這個階段就可以了

但是參考的範例是個別化的背板

也就是會顯示每個人的服務單位跟姓名職稱

自己嘗試之後,可以有2種方式來處理

1.如果數量不是很多,可以在PowerPoint一個一個地修改文字,再一起轉成圖檔

2.可以利用Word的合併列印功能,將套印的檔案另存成PDF檔,再將PDF轉存成jpeg圖檔

在版面大小就要自訂尺寸,參考在PowerPoint的設定成橫向,寬度33.867公分、高度19.05公分

將PowerPoint轉存的圖檔作為底圖 ,再用文字方塊輸入合併列印欄位,再調整文字格式

我一開始想嘗試用Acrobat的PDFMaker,也就是虛擬印表機來輸出

但是版面怎麼設定都不會是想要的16:9的比例

也曾經用Acrobat在word增益集的合併列印功能,但是不同Office版本都會有不同的問題

Word2019會把文字方塊壓到圖檔之下

Word2016會兩頁輸出在一個PDF檔內

最後還是先在Word合併輸出,另存成PDF檔,最後再將PDF轉存為圖檔

相較之下,直接從PowerPoint轉存的圖檔,色彩會比PDF轉存出來的圖檔來得鮮豔一點

不過在GoogleMeet的720p的解析度之下,其實根本看不出來

最後補充一個如何批次修改檔名的方式

在圖檔資料夾執行內容為以下程式碼的bat檔

dir /b /on > list.txt

這樣會取得一個存有所有檔案名稱,包含副檔名的list.txt

然後在Excel編排成以下的文字串

將工作表另存成txt檔,再修改副檔名為bat

執行之後就能一次修改所有圖檔的名稱了

2022年5月6日 星期五

Gg / 如何在Gmail撰寫Html內容的信件

如果單純地修改文字顏色、大小等格式

直接用Gmail的編輯器就可以了

不過如果想在Gmail裡貼上表格

尤其是從Word 或者 Excel擷取的資料內容

雖然可以直接用複製貼上的方式貼入內容

只是透過這樣方式貼入的表格無法調整欄位大小…

如果想要調整表格

比較好的方式是透過Html編輯<table>

但是在Gmail無法直接編輯或輸入Html內容

通常都是需要利用Chrome擴充程式來達成

後來在youtube看到一個Google Apps Script / Google Sheets教學頻道

示範透過Gmail App 建立帶有Html內容的草稿

方法很簡單(如果對於Google Apps Script有基本的認識)

在Google Apps Script透過HtmlService引入html內容

再使用GmailApp.createDraft建立帶有html內容的草稿

const html = HtmlService.createTemplateFromFile("tmp1").evaluate().getContent();

GmailApp.createDraft("","草稿","",{htmlBody:html});

完整的測試程式碼如下

1
2
3
4
5
6
function myFunction() {
  const html = HtmlService.createTemplateFromFile("tmp1").evaluate().getContent();

  GmailApp.createDraft("","草稿","",{htmlBody:html});

}

 

引用的Html

而要建立html內容的方式很簡單

可以利用網路上的線上網頁編輯器

像是:線上HTML編輯器(Online Html Editor)、Online HTML Editor

如果要貼入Word表格

可以使用Word to HTML

這個網站可以將貼入的Word表格轉換成Html格式

只不過這個方式建立的是草稿

那假如是回信的時候,想要帶入Html內容的話

也可以利用Google Apps Script來建立html內容的回覆草稿

透過GmailApp.getInboxThreads取得一個範圍的Threads,然後再指定是哪一個Thread

再從這個Thread的Messages指定最新一筆/最後一筆Message

  var oneThread = GmailApp.getInboxThreads(0,5)[0];        //getInboxThreads(起始,最大值)--> 陣列   [n]取出第n+1個Thread

  var message = oneThread.getMessages().slice(-1)[0];      //Thread裡的最新的(最後的)Message    .slice(-1)[0]從陣列取出最後一筆 slice()取得的是陣列資料,因為也只有一筆,所以用[0]取出

最後從這個Message建立信件回覆的草稿createDraftReply

 message.createDraftReply("incapable of HTML", {  htmlBody: html});  //"incapable of HTML" 如果後面htmlBody無法顯示時所出現的內容

這個方式就要先知道要建立的草稿是哪一個Thread的哪一個Message

完整的測試程式碼如下

1
2
3
4
5
6
7
8
9
function myFunction() {
  const html = HtmlService.createTemplateFromFile("tmp1").evaluate().getContent();

  // Create a draft reply to the original message with an acknowledgment.
  var oneThread = GmailApp.getInboxThreads(0,5)[0];        //getInboxThreads(起始,最大值)--> 陣列   [n]取出第n+1個Thread
  var message = oneThread.getMessages().slice(-1)[0];      //Thread裡的最新的(最後的)Message    .slice(-1)[0]從陣列取出最後一筆 slice()取得的是陣列資料,因為也只有一筆,所以用[0]取出
  message.createDraftReply("incapable of HTML", {  htmlBody: html});  //"incapable of HTML" 如果後面htmlBody無法顯示時所出現的內容

}

 

備註:

Gmail收件匣看到的每一筆資料,都是一個Thread

整個Gmail收件匣,就是Thread的集合Threads

我們稱之為信件是Thread之中的Message集合-Messages

關係大概是這樣:Threads[  ]-Thread ∩ Messages[  ]-Message

 

後來在網路看到一個更簡單的方式-透過瀏覽器直接編輯Html的功能

現在的瀏覽器都有這樣的功能,我用的是chrome瀏覽器

1.在信件內文,先隨意打入一串文字,選取之後按右鍵-檢查

2.找出剛剛輸入文字的位置

3.按右鍵-以HTML編輯

4.修改Html格式之後,在空白處按Enter,或者滑鼠左鍵

5.修改的內容應該就會帶回到Gmail信件編輯器內

這種方式也可以直接把在線上編輯的Html內容貼進去

 

備註:

這個方式,跟上面用Google Apps Script帶入Html內容

如果進行CSS樣式的修改,都只能用行內樣式(Inline styles)來設定

 

參考資料

Gmail – Use HTML Templates: Email with HTML & CSS

How To Embed HTML in GMAIL Email | HTML Email Campaign Guide [2021]