3

特定の状況が発生した場合に特定のセルを保護する、Googleスプレッドシート用のGoogle Appsスクリプトを作成できるかどうかは誰にもわかりませんか? FX。「A1」に X が発生した場合、「A2」を保護する必要がありますか?

4

5 に答える 5

1

そうではない。それが細胞保護の仕組みだとは思いません。セルが手動で保護されているか、まったく保護されていません。

その機能を有効にするセル関数またはスクリプト オブジェクトはありません。

于 2012-11-08T02:17:35.843 に答える
1

セル保護を管理する API はまだありません。この機能リクエストはこれを求めています。スターを付けて、更新を追跡したり、投票したりすることができます。

于 2012-11-08T09:44:34.743 に答える
0

私はこれが古い質問であることを知っていますが、それでも - Google の "feture request" (Henrique Abreu によって投稿された) は今まで進歩していません (2014 年末)

私の推測:この種の機能は、ユーザーが後でロックされるセルを編集するように要求された場合 (基準または別の種類のロジックによって)、Google フォーム ( http://www.google.com/forms/about ) の回避策になります。

私は最近、職場で同様の状況に遭遇しました。私の解決策は非常に簡単です。フォームを作成して、関連するユーザーと共有します。フォーム フィールドを使用すると、ユーザーはロックする必要があるデータを入力できます。そのフォームは最終的に情報のシートを生成します (フォームが入力されるたびにオンラインで更新されます)。別のシートから「IMPORTRANGE」 ( https://support.google.com/docs/answer/3093340?hl=en ) を使用すると、関連するシート内の「ロックされた」情報を照会することになります。データは別のシート内にあり、数式として表されているため、編集できません (少なくともデータとしては編集できません)。

実際にセルを「ロック」できる真の回避策を実際に検討しています(その値をスクリプトで元の値に置き換えることにより)..そのような要求がある場合

于 2014-12-16T09:18:42.923 に答える
-2

回避策があります。コードは次のとおりです

function protect_named_range(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var target_sheet = ss.getSheetByName('Sheet1');//change "sheet1" for the sheet your range is in
  var array_range1 = target_sheet.getRange("A1:A1");
  var array_range2 = target_sheet.getRange("A2:A2");
  var range_test = array_range1.getValue();// or getFormula or what ever you want to test
  if(range_test == "correct answer"){ //if cell A2 = "correct answer" then cell B2 becomes a named range called "named_range"       
    ss.setNamedRange("named_range", array_range2);
   SpreadsheetApp.setActiveSheet(target_sheet);
   var sheet = SpreadsheetApp.getActiveSheet();
   var permissions = sheet.getSheetProtection();
   permissions.setProtected(true);
   target_sheet.setSheetProtection(permissions);
  }
 }

すみません、しばらく離れていました。これは私が使用する基本的なコードですが、セル A2 = "正解" の場合、実際には範囲 "B2" を保護しません。代わりに、セル A2 = "正解" の場合、"sheet1" という名前のシートを保護するため、スプレッドシートの所有者のみがシート上のあらゆるものを編集できます。

これがあなたの目的ではないことは承知していますが、お役に立てば幸いです。

于 2012-11-08T21:12:15.603 に答える