单击空单元格时,需要一个可在Google电子表格中填充datepicker的脚本

时间:2013-05-01 15:10:28

标签: google-apps-script google-sheets

根据我所做的研究,默认情况下似乎没有办法在谷歌电子表格中的空单元格中填充日期选择器。单元格必须已有一个日期,以便弹出日期选择器。谈到脚本,我非常环保。我理解大部分术语,但我不确定从哪里开始创建它。有人可以帮帮我吗?我希望datepicker填充在特定列的每个单元格中。

2 个答案:

答案 0 :(得分:1)

我打算在WebApps上指出Adding a datepicker in Google Spreadsheet,但你找到了它。

如您所知,只有在单元格中存在有效日期时才会出现日期选择器。对datepicker小部件也没有编程控制。

此函数将使用相同的默认值填充任何范围内的每个单元格,该值可以是电子表格支持的任何类型。

/**
 * Fill a range with a default value.
 *
 * @param {Range} rangeFill A spreadsheet range to be filled
 * @param {Object} value The default value to fill the range with
 */
function rangeDefault( rangeFill, value ) {
  // Fill a two-dimensional array with default values
  var defaults = [[]];
  // Dimension the array to match the input range
  var height = rangeFill.getLastRow() - rangeFill.getRow() + 1;
  var width = rangeFill.getLastColumn() - rangeFill.getColumn() + 1;
  for (var row=0; row < height; row++ ) {
    defaults[row]=[];
    for (var col=0; col < width; col++ ) {
      defaults[row][col] = value;
    }
  }
  // Fill the range with the array contents.
  rangeFill.setValues(defaults);
}

为了便于在电子表格中使用,这是一个菜单功能。只需选择您想要填充的范围,然后从“自定义菜单”中选择“日期填充”,选择将填入今天的日期。

/**
 * Menu function - fill the currently selected range with today's date.
 */
function dateFill() {
  var today = new Date();
  var defaultDate = new Date( today.getFullYear(), today.getMonth()+1, today.getDate() );
  rangeDefault( SpreadsheetApp.getActiveSpreadsheet().getActiveRange(), defaultDate);
}

function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : "Date Fill",
    functionName : "dateFill"
  }];
  sheet.addMenu("Custom Menu", entries);
};

答案 1 :(得分:0)

As(在此A的早期版本之后,我现在注意到了!)OP已在Web应用程序中找到:

使用条件:日期并且是有效日期将验证应用于所选范围,然后只需双击该范围内的单元格即可调用日期选择器。