web-dev-qa-db-ja.com

スクリプトでチェックボックスを追加する

スクリプトを使用してCheckBoxSheetに追加するにはどうすればよいですか?

これはおそらく些細なことですが、オンラインで単一の例を見つけることができず、CheckBoxクラスについても docs で言及されていません。

GUIから、Insert-> CheckBoxに移動します。

セルの値をTRUEまたはFALSEに設定しても機能しません。

5
Athamas

簡潔な答え

GoogleスプレッドシートのUIからチェックボックスを追加し、 Class Range のcopyToメソッドのいずれかを使用します。

説明

注:On April 19、209 Google Apps Scriptリリースに含まれるGoogleは、requireCheckboxメソッドに注意します。 my other answer の詳細を参照してください。

Google Apps Script Spreadsheetサービスには、Googleスプレッドシートのユーザーインターフェースから実行できるすべてのメソッドが含まれていません。これは、かなり新しい機能である[挿入]> [チェックボックス]の場合です。

記録マクロ機能でもこれを行うことはできません。次は一瞬前に記録された

/** @OnlyCurrentDoc */

function InsertCheckbox() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1').activate();
  /*
   * Added to show the missing Insert > Checkbox step
   */
  spreadsheet.getRange('B1').activate();
  spreadsheet.getRange('A1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};

注:SpreadsheetApp.CopyPasteType.PASTE_NORMALの代わりにすべてのセルプロパティ(境界線、数式、背景など)を渡したくない場合は、SpreadsheetApp.CopyPasteType.PASTE_DATA_VALIDATIONを使用します。

スタックオーバーフローの関連Q

6
Rubén

簡潔な答え

使用 文書化されていない メソッドrequireCheckbox

注:On April 19、209 Google Apps Scriptリリースに含まれるGoogleは、requireCheckboxメソッドに注意します。

function addCheckboxToA1() {
  var cell = SpreadsheetApp.getActive().getRange('A1');
  var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
  var rule = SpreadsheetApp.newDataValidation()
    .requireCheckbox()
    .build();
  cell.setDataValidation(rule);
}

説明

AppsスクリプトIDEオートコンプリート機能には、 https://developers.google.com/apps-script/ に記載されていないいくつかのメソッドが表示されます。この方法の1つ  requireCheckbox()メソッドとして表示されるnewDataValidation()でした。

参照資料

2
Rubén