Zyr*_*ano 10 checkbox google-sheets google-apps-script
我知道复选框是Google表格中相对较新的功能,所以我试图找到一种在单元格中自动创建复选框的方法.
到目前为止,我还没有在Google Apps脚本文档中找到有关此内容的参考.
目前我手动完成,但任何使用脚本的建议将非常感激.
And*_*ler 17
我不确定他们什么时候做到了,但他们现在已经添加了这个.使用类DataValidationBuilder
的requireCheckbox()
方法.例:
function setCheckboxes() {
// Assumes there's only one sheet
var sheet = SpreadsheetApp.getActiveSheet();
// This represents ALL the data
var dataRange = sheet.getDataRange();
/* Get checkbox range from sheet data range. Assumes checkboxes are on the
left-most column
*/
var dataRangeRow = dataRange.getRow();
var dataRangeColumn = dataRange.getColumn();
var dataRangeLastRow = dataRange.getLastRow();
var checkboxRange = sheet.getRange(
dataRangeRow,
dataRangeColumn,
dataRangeLastRow
);
var enforceCheckbox = SpreadsheetApp.newDataValidation();
enforceCheckbox.requireCheckbox();
enforceCheckbox.setAllowInvalid(false);
enforceCheckbox.build();
checkboxRange.setDataValidation(enforceCheckbox);
}
Run Code Online (Sandbox Code Playgroud)
Tan*_*ike 11
您想使用脚本在电子表格的单元格中创建复选框.如果我的理解是正确的,那么这个变通方法呢?不幸的是,Class SpreadsheetApp还没有创建复选框的方法.(当尝试使用此类方法时,会发生错误.)因此,我建议使用Sheets API创建它.
当我看到ConditionType
时dataValidation
,BOOLEAN的文件说
单元格的值必须为TRUE/FALSE或条件值列表.由数据验证支持.呈现为单元格复选框....
从这里,我可以理解如何使用Sheets API创建复选框.以下脚本是示例脚本.这将为"A1:C3"创建6个复选框.使用此脚本时,请按照以下步骤在Advanced Google Services和API控制台中启用Sheets API.
如果您现在使用使用Sheets API的脚本打开脚本编辑器,则可以通过访问此URL为项目启用Sheets API :https://console.cloud.google.com/apis/library/sheets.googleapis.com/
在此示例脚本中,复选框创建为Sheet1的"A1:C3".请使用此脚本作为容器绑定脚本.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetId = ss.getSheetByName("Sheet1").getSheetId();
var resource = {"requests": [
{
"repeatCell": {
"cell": {"dataValidation": {"condition": {"type": "BOOLEAN"}}},
"range": {"sheetId": sheetId, "startRowIndex": 0, "endRowIndex": 3, "startColumnIndex": 0, "endColumnIndex": 3},
"fields": "dataValidation"
}
},
{
"updateCells": {
"rows": [
{"values": [{"userEnteredValue": {"boolValue": true}}, {"userEnteredValue": {"boolValue": false}}, {"userEnteredValue": {"boolValue": false}}]},
{"values": [{"userEnteredValue": {"boolValue": true}}, {"userEnteredValue": {"boolValue": true}}, {"userEnteredValue": {"boolValue": false}}]},
{"values": [{"userEnteredValue": {"boolValue": true}}, {"userEnteredValue": {"boolValue": true}}, {"userEnteredValue": {"boolValue": true}}]}
],
"start": {"rowIndex": 0, "columnIndex": 0, "sheetId": sheetId},
"fields": "userEnteredValue"
}
}
]};
Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
Run Code Online (Sandbox Code Playgroud)
流 :
dataValidation
设置使用repeatCell
.boolValue
设置使用updateCells
.在2018年6月22日,此脚本返回服务器错误的错误.
var rule = SpreadsheetApp.newDataValidation().withCriteria(SpreadsheetApp.DataValidationCriteria.CHECKBOX, ["TRUE", "FALSE"]).build();
SpreadsheetApp.getActiveSheet().getRange("A1").setDataValidation(rule);
Run Code Online (Sandbox Code Playgroud)
如果我误解你的问题,我很抱歉.
现在,您可以直接insertCheckboxes
(或removeCheckboxes
)使用Range
或RangeList
不使用任何解决方法。您还可以使用文档中提供的替代方法签名来更改检查值/未检查值。
SpreadsheetApp.getActive()
.getRange('Sheet2!A2:A10')
.insertCheckboxes();
Run Code Online (Sandbox Code Playgroud)
该复选框是最近添加的数据验证标准。有趣的是,当我尝试在包含复选框的范围上调用“getDataValidation()”方法时,会引发以下错误:
var rule = range.getDataValidation();
Run Code Online (Sandbox Code Playgroud)
很抱歉,服务器发生错误。请稍等一下,然后重试。
同时,您可以通过在工作表中的某个位置放置一个复选框并将其数据验证复制到新范围来解决此问题。例如,如果“A1”是包含复选框的单元格,并且目标范围由 3 行的单列组成:
var range = sheet.getRange("A1"); //checkbox template cell
var targetRange = sheet.getRange(rowIdex, colIndex, numOfRows, numOfCols);
range.copyTo(col, SpreadsheetApp.CopyPasteType.PASTE_DATA_VALIDATION);
var values = [["true"], ["false"], ["false"]];
targetRange.setValues(values);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10810 次 |
最近记录: |