私はあらゆる場所を調べましたが、GAS は Google スプレッドシートに追いついていないようです。シート内の特定の範囲に保護を設定するための総当りの方法はありますか..? (そして、すべての数式で保護されたシートを作成し、それらを参照しても役に立ちません。)
Google でこれを見つけました: https://code.google.com/p/google-apps-script-issues/issues/detail?id=1721
私も一番下にコメントしました。(有用というよりも苦情のほうが多いです。) しかし、私の上の人がこのコードを投稿しました:
//Function to Protect Target Sheet
function ProtectTargetSheet() {
//Enter ID for each Worksheet
var IDs = ["Sheeet_1", "Sheet_2"]
//Enter Page to protect, in order of WorkSheets
var Sheet_names = ["Page_1", "Page_2"]
//For each sheet in the array
for ( i = 0; i < IDs.length; i ++) {
//id of sheet
var sheet = IDs[i]
//activate dedicated sheet
var ActiveSheet = SpreadsheetApp.openById(sheet)
//Find last row and column for each sheet
var LastRow = ActiveSheet.getSheetByName(Sheet_names[i]).getLastRow();
var LastCol = ActiveSheet.getSheetByName(Sheet_names[i]).getLastColumn();
//Name of protectSheet
var Name = "Protect_Sheet";
//Range for Protection
var Named_Range = ActiveSheet.getSheetByName(Sheet_names[i]).getRange(1, 1, LastRow, LastCol);
//Impletment Protect Range
var protected_Range = ActiveSheet.setNamedRange(Name, Named_Range);
}
}
共有されたときに範囲を保護するためにこれがどのように機能するのかわかりません。名前付き範囲を作成するだけのようです。彼は最初に権限を手動で設定するように言っています。しかし、彼が何を意味したのか正確にはわかりません。
とにかく、Google が GAS を対応するものと同期するまで、誰かがこれを行う方法を見つけてくれることを願っていました。
私の願いは、100% コードを使用して、スプレッドシート内のシート内の範囲を選択し、このスプレッドシート全体を誰かと共有するときに、その範囲を編集できないようにすることです。そのシートには、編集できる必要がある他の部分があります。その範囲ではないだけです。これを手動で行うのは簡単ですが、何百ものスプレッドシートを作成する必要がある場合は、GAS を介してこれを実行できると便利です。
ありがとう。