iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
IT 管理

30 天玩轉 GAS: 打造你的個人自動化助手系列 第 11

[Day 11] GAS - Google Sheet 操作大全 Part 4 - 工作表操作

  • 分享至 

  • xImage
  •  

在開始今天的文章前,先跟大家釐清兩個名詞:

  • Spreadsheet: 試算表,指整個 google sheet 檔案
  • Sheet: 工作表,指試算表中其中的一頁 table

那就可以開始今天的教學,對工作表 Sheet 做操作!

在對儲存格作操作以前,最重要的是我們先必須拿到我們要操作的試算表 Spreadsheet

  1. 從 spreadsheet 中直接開啟 app scirpt, 呼叫 getActiveSpreadsheet()
  var curr_spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  1. 開啟含有指定 ID 的試算表,呼叫 openById(id)
var ss = SpreadsheetApp.openById("abc1234567");

拿到 Spreadsheet 的物件後,就可以對他做各種操作啦~
接下來就介紹各種 Spreadsheet 相關的操作方法

工作表的 CRUD

獲取當前活動的工作表 getActiveSheet() & 所有工作表 getSheets()

function getActiveSheet() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  Logger.log(sheet.getName()); // 輸出當前活動工作表的名稱
  
  var sheets = spreadsheet.getSheets();
  for (var i = 0; i < sheets.length; i++) {
    Logger.log(sheets[i].getName()); // 日誌中列出所有工作表的名稱
  }
}

getActiveSheet() 獲取當前選中的工作表對象。
getSheets() 獲取包含所有工作表對象的陣列。

取得工作表名與重新命名 getName()/setName()

function getSheetByName() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  if (sheet) {
    Logger.log(sheet.getName()); // 輸出工作表名稱 'Sheet1'
    sheet.setName('Renamed Sheet'); // 將'Sheet1'重新命名為'Renamed Sheet'
  }
}

setName(newName) 將工作表重命名為 newName。

創建/刪除一個新的工作表 insertSheet()/deleteSheet()

function createSheet() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  spreadsheet.insertSheet('New Sheet', 0); // 創建名為'New Sheet'的新工作表並放在第一位
  
  var del_sheet = spreadsheet.getSheetByName('Sheet1');
  spreadsheet.deleteSheet(del_sheet); // 刪除名為'Sheet1'的工作表
}

insertSheet(name) 創建一個名稱為 name 的新工作表。
insertSheet(name, sheetIndex) 將新工作表插入到指定的索引位置(例如 0 表示第一個位置)。
deleteSheet(sheet) 刪除指定的工作表對象。

移動工作表 moveActiveSheet(position)

// This example assumes that there are 2 sheets in the current
// active spreadsheet: one named "first" in position 1 and another named "second"
// in position 2.
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// Gets the "first" sheet and activates it.
var sheet = spreadsheet.getSheetByName("first").activate();

// Logs 'Current index of sheet: 1'
console.log("Current index of sheet: %s", sheet.getIndex());

spreadsheet.moveActiveSheet(2);

// Logs 'New index of sheet: 2'
console.log("New index of sheet: %s", sheet.getIndex());

moveActiveSheet(position) 將當前活動工作表移動到指定的索引位置。

複製工作表至另個試算表 copyTo(spreadsheet)

function copySheet() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var targetSpreadsheet = SpreadsheetApp.openById('TARGET_SPREADSHEET_ID');
  sheet.copyTo(targetSpreadsheet); // 將當前工作表複製到指定試算表
}

copyTo(spreadsheet) 將當前工作表複製到指定的試算表。

獲取工作表中的最大列數和欄數 getMaxRows()/getMaxColumns()

function getSheetDimensions() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var maxRows = sheet.getMaxRows();
  var maxColumns = sheet.getMaxColumns();
  Logger.log('Rows: ' + maxRows + ', Columns: ' + maxColumns);
}

getMaxRows() 獲取工作表中的最大列數。
getMaxColumns() 獲取工作表中的最大欄數。

在指定位置前插入新列或欄 insertRowBefore()/insertColumnBefore

function insertRowsAndColumns() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.insertRowBefore(2); // 在第2行之前插入一行
  sheet.insertColumnBefore(1); // 在第1欄之前插入一欄
}

insertRowBefore(position) 在指定位置前插入一行。
insertColumnBefore(position) 在指定位置前插入一欄。

恭喜你把 Google Sheet 的基本操作幾乎都學得差不多啦
明天將帶你進入 Google Sheet 的最後一章:RichTextValue 讓文字不只是文字


上一篇
[Day 10] GAS - Google Sheet 操作大全 Part 3 - 刪除資料
下一篇
[Day 12] GAS - Google Sheet 操作大全 Part 5 - RichTextValue 讓文字不只是文字
系列文
30 天玩轉 GAS: 打造你的個人自動化助手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言