2023年2月11日 星期六

用 ChatGPT 寫 Google Apps Script ,真的是太神奇了~

2/9~2/10 這二天在縣網中心
跟著俊凱老師、奕豪老師和清展老師學著好用的 Google Apps Scritp
如果再加上 ChatGPT 真的只要會複製、貼上就完成了,
想不到在完全不懂語法的狀況下也完成了心理想要的,
新增按鈕、新增可自行命名的工作表、複製資料貼上為值、一鍵清除資料
真的太神奇了!


原本這次的想法是,只要能在 Google 試算表中生成自製選單
一鍵清除範圍內資料
想不到 ChatGPT 提供的語法完全適用,只需小小的修改而己!
有興趣的老師一定要來試試!


這個函數使用 getActiveSheet() 方法來獲取當前活躍的工作表 (ActiveSheet),然後使用 for 迴圈遍歷要清除的範圍 (rangesToClear),使用 getRange() 方法來獲取每個範圍,最後使用 clearContent() 方法來清除該範圍中的內容。

您可以在 rangesToClear 陣列中添加要清除的每個範圍,然後運行函數即可一次清除多個範圍的資料。如果需要清除的範圍很多,也可以使用其他的陣列處理方法,例如 push() 方法將範圍添加到陣列中。



在這個例子中,onOpen() 函數會在使用者打開試算表時觸發。這個函數會建立一個名為 "我的選單" 的自訂選單,並在該選單中添加一個名為 "執行程式" 的項目。當使用者單擊 "執行程式" 選項時,它會調用 myFunction() 函數,您可以在其中編寫您要執行的程式碼。

在這個例子中,我們使用了 SpreadsheetApp.getUi() 方法來獲取 Ui 類別的實例,然後在 createMenu() 方法中設置選單名稱。接著,在 addItem() 方法中添加一個選單項目,並指定該項目調用的函數。最後,我們使用 addToUi() 方法將選單加入到試算表的用戶介面中。




有了 Apps Script 語法後就可以把它貼進 Google Sheets 中了!

1、打開 Google Sheets - 擴充功能
2、點選 Apps Script
3、將上面 ChatGPT 提供的語法貼上
4、完成後記得 儲存授權 並 執行
5、這樣在文件範圍欄位中貼上的資料就可以一鍵清除啦!


哈哈~加上自製選單後,感覺好像提升了好幾個檔次呢~


感謝俊凱老師提供了,使用 getLastRow 跟 getLastColumn 的方法
所以再次詢問 ChatGPT !噹噹~~正確語法就出現在眼前囉~~

在這個示例代碼中,我們首先獲取當前活動工作表對象,然後使用 getLastRow()getLastColumn() 方法獲取最後一行和最後一列的位置。接下來,我們使用 getRange() 方法根據這些位置獲取一個範圍對象,範圍的開始行為 2(因為第一行是表頭,我們不需要對其進行操作),開始列為 1,結束行為最後一行,結束列為最後一列。最後,我們可以在 range 對象上進行進一步的操作。

使用 getLastRow()getLastColumn() 方法的好處是,即使您更改了表格的大小,代碼也可以自動適應。這可以讓您的代碼更加靈活和可維護。




這個示例代碼首先獲取當前活動工作表對象,然後使用 getLastRow()getLastColumn() 方法獲取最後一行和最後一列的位置。接下來,我們使用 getRange() 方法根據這些位置獲取一個範圍對象,範圍的開始行為 2(因為第一行是表頭,我們不需要對其進行操作),開始列為 1,結束行為最後一行,結束列為最後一列。最後,我們在 range 對象上使用 clearContent() 方法來清除範圍內的所有內容。

如果您只想清除範圍內的格式,可以使用 clearFormat() 方法;如果您想要將整個範圍都刪除,可以使用 clear() 方法。這些方法的使用方式與 clearContent() 方法類似,只需要將方法名替換即可。




原本到上面從無到有就很滿意了~
但覺得應該還要更完善些....

所以再加碼問 ChatGPT ,如何將已經處理好的資料,
新增到自行命名的工作表中,貼上的資料不會包含公式只保留值

ChatGPT 也真的聽得懂我的需求,再次提供了完美的解決方式!



在上面的程式碼中,我們使用 ui.prompt() 方法建立一個對話框,讓使用者輸入新工作表的名稱。使用者輸入的名稱可以透過 getResponseText() 方法取得。在建立新工作表時,我們將這個名稱作為參數傳遞給 insertSheet() 方法。


沒有留言:

張貼留言

歡迎大家一起留言討論!