我正在寻找一种“有条件地保护”我床单范围的方法。我知道没有脚本是不可能的...因此,我需要这样做: 打开时,如果A2 =“ C”,则保护范围(A6:A)不被修改。否则,请保持不受保护。 应该以10张带有给定名称(Com1,Com2,...,Com10)的表重复此操作
任何帮助将不胜感激
答案 0 :(得分:0)
签出对access and modify protected ranges in sheets的Apps脚本参考。您可以构建一个保护对象,其中包含允许谁编辑给定范围的权限。
Google表格具有简单的触发器,其中包括将运行onOpen()
的函数,您可以将其放入代码中。完整的Apps Script reference for extending Sheets为构建功能来编辑和操作电子表格的结构和数据提供了很好的资源。
您将要使用.getRange('A6:A')
并建立一个条件,如果@model SaveMultipleRows.Models.ProductViewModel
<form method="post" action="PostData">
<table id="tblCustomers" class="table" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th style="width:150px">Product Name</th>
<th style="width:150px">Quantity</th>
<th style="width:150px">CategoryId</th>
<th></th>
</tr>
</thead>
<tbody></tbody>
<tfoot id="item-list">
<tr>
<td><input type="text" asp-for="Products[0].Name" class="items" /></td>
<td><input type="text" asp-for="Products[0].Quantity" class="items" /></td>
<td><select asp-for="Products[0].CategoryId" class="items" asp-items="@ViewBag.Category">
</select>
</td>
@*<td><input type="button" id="btnAdd" value="Add" /></td>*@
</tr>
</tfoot>
</table>
<button id="add">Add another item</button>
<input type="submit" value="Create" class="btn btn-default" />
</form>
@section Scripts {
<script>
$("#add").click(function (e) {
e.preventDefault();
var i = ($(".items").length) / 3;
var model = @Html.Raw(@ViewBag.Categories);
var n = '<tr> <td><input type="text" class="items" name="Products[' + i + '].Name" /></td>' +
'<td><input type="text" class="items" name="Products[' + i + '].Quantity" /></td>' +
'<td><select id="Products_' + i + '_CategoryId" name="Products[' + i + '].CategoryId" class="items" /></td></tr>'
$("#item-list").append(n);
var categories = "";
$(model).each(function () {
categories = categories + '<option value="' + this.Value + '">' + this.Text + '</option>'
});
var subCateList = $("#Products_" + i + "_CategoryId");
subCateList.empty();
subCateList.append(categories);
});
</script>
}
,该条件将调用.protect()
方法。
您还可以使用SpreadsheetApp.getActiveSpreadsheet.getSheets()
从电子表格中获取所有工作表,并使用forEach()
对返回的数组进行遍历,以将保护应用于所有工作表。