大写给定范围的第一个字母

时间:2017-07-30 15:34:26

标签: google-sheets spreadsheet

我想在整个专栏的第一个字上写一个大写字母,数据(v7:v)。

我找到了一个脚本,但它不起作用:

function proper() {
  var arr = [],
    s = SpreadsheetApp.getActiveSheet();
    s.getRange('b2:b').getValues().forEach(function (r) {
      if (r[0]) arr.push([toTitleCase(r[0])])
    });
  s.getRange(2, 2, arr.length, arr[0].length)
    .setValues(arr);
  }

function toTitleCase(str) {
  return str.replace(/\w\S*/g, function (txt) {
    return txt.charAt(0)
        .toUpperCase() + txt.substr(1)
        .toLowerCase();
  });
}

此外,我希望此脚本仅适用于给定的工作表。

我测试过:

var ss=SpreadsheetApp.getActiveSpreadsheet(); 
var s=ss.getSheetByName("sheet1");

1 个答案:

答案 0 :(得分:0)

它对我有用,但我猜你真的希望脚本实际上改变同一列。该脚本只是通过将大写的单词复制到另一列来向您展示如何执行此操作。

这可能不是你想要的,所以我拿了那些代码并设置它来大写A栏中的所有单词。不要忘记将表格的名称改为你想要的。

function proper() {
    var arr = [];
    var ss = SpreadsheetApp.getActive();
    var s=ss.getSheetByName('Sheet 1');
    s.getRange('a:a').getValues().forEach(function (r) {
      if (r[0]) arr.push([toTitleCase(r[0])])
    });
  s.getRange(1, 1, arr.length, arr[0].length).setValues(arr);
  }

function toTitleCase(str) {
  return str.replace(/\w\S*/g, function (txt) {
    return txt.charAt(0)
        .toUpperCase() + txt.substr(1)
        .toLowerCase();
  });
}