*GAS*从谷歌表单中的字符串数组创建标题

*GAS* Create headers from an array of strings in google sheets

本文关键字:字符串 数组 创建 标题 GAS 谷歌 表单      更新时间:2023-09-26

我正试图用GAS在Google Sheets中创建两个标题。

我想从A1开始向每个单元格写入数组"values"中的第一个字符串,然后转到单元格B1,再写入数组"value"中的第二个字符串。依此类推,这取决于数组"值"的大小。

我做错了什么?

function formatSheet(){
    var name =  "Formatted Sheet";
    var values = [["Description", "Quantity"]];
    ss.setActiveSheet(ss.getSheets()[0]);
    ss.renameActiveSheet(name);
    createHeaders(name,values);
}
function createHeaders(name,values){
    var sheet = ss.getSheetByName(name);  
    for(var i = 1; i < values.length; ++i){
        for(j=0; j<values.length; ++j){
            //create the headers
            sheet.getRange(1, i).setValues(values[j]);
    } 
}

也许我误解了你想做的事情,但看起来你已经克服了复杂的事情。如果您只设置头,那么您知道values数组中只有1个数组,这意味着您可以取消for循环,只获取其中第一个数组的长度。参见我的示例:

function formatSheet(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var name =  "Format2";
  var values = [["Description", "Quantity"]];
  ss.setActiveSheet(ss.getSheets()[0]);
  ss.renameActiveSheet(name);
  var sheet = ss.getSheetByName(name);
  var cols = values[0].length;
  sheet.getRange(1, 1, 1, cols).setValues(values);
}

知道你犯了什么错误也会很有帮助。

修改了Jens Astrup的解决方案,将标题插入当前活动的电子表格

function SetHeadersToActiveSheet(){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = SpreadsheetApp.getActiveSheet();
    var values = [["Description", "Quantity", "Amount"]];
    var cols = values[0].length;
    sheet.getRange(1, 1, 1,cols).setValues(values);
}