---
# System prepended metadata

title: 用 Apps Script 設定 Google Sheets 保護欄位
tags: [Chore]

---

# 用 Apps Script 設定 Google Sheets 保護欄位

保護 key
```=javascript
function protectColumnsWithKey() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();

  // 遍歷每個工作表
  for (var i = 0; i < sheets.length; i++) {
    var sheet = sheets[i];
    var range = sheet.getRange(1, 1, 1, sheet.getMaxColumns());
    var values = range.getValues();

    // 遍歷每個欄位的第一列
    for (var j = 0; j < values[0].length; j++) {
      if (values[0][j] === "key") {
        // 如果第一列的文字是 "key"，則設定該欄位為保護的範圍
        var protectRange = sheet.getRange(1, j + 1, sheet.getMaxRows(), 1);
        var protection = protectRange.protect().setDescription('Protected Column with Key');
        
        // 可編輯者的 email
        var allowedEditors = [
            'xxx@xxxx.com',
        ];
        protection.addEditors(allowedEditors);
      }
    }
  }
}

```

保護 en-US, zh-TW...
```=javascript
const language = ['en-US', 'zh-TW']
function protectColumnsWithKey() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();

  // 遍歷每個工作表
  for (var i = 0; i < sheets.length; i++) {
    var sheet = sheets[i];
    var range = sheet.getRange(1, 1, 1, sheet.getMaxColumns());
    var values = range.getValues();

    // 遍歷每個欄位的第一列
    for (var j = 0; j < values[0].length; j++) {
      if (language.includes(values[0][j])) {
        // 如果第一列的文字是 "key"，則設定該欄位為保護的範圍
        var protectRange = sheet.getRange(1, j + 1, sheet.getMaxRows(), 1);
        var protection = protectRange.protect().setDescription('Protected Column with Key');
        
        // 可編輯者的 email
        var allowedEditors = [
            'xxx@xxxx.com',
        ];
        protection.addEditors(allowedEditors);
      }
    }
  }
}
