【问题标题】:Headers in Google Script not Showing up ProperlyGoogle 脚本中的标头未正确显示
【发布时间】:2021-03-17 13:52:50
【问题描述】:

我想运行这个将信息从 AD 引入电子表格的脚本。但我也想在第一行添加标题,但是当我运行此脚本时,它确实冻结了第一行,但不是添加标题名称,而是冻结第一个人的姓名、电子邮件、电话、电子邮件等。 . 有没有办法指定main函数从第2行开始输出?还是有更好的方法来格式化它,以便标题正确输入?

function writeToSpreadsheet(){
    var values = [];
    var users = AdminDirectory.Users.list({domain:'domain.com'}).users; 
    for (var i=0; i<users.length; i++){
      values.push([users[i].name.fullName, getExternalID(users[i].externalIds || []), getPhones(users[i].phones || []),getDeviceName(users[i].organizations || []) ]);
      createHeaders();
    }

  
    var spreadsheetUrl = 'docs.googlesheet.com';
      SpreadsheetApp.openByUrl(spreadsheetUrl).getSheets()[0].getRange(1, 1, values.length, values[0].length).setValues(values);
   
  }  
      
  
  function getExternalID(arr) {
    return arr.map(function(ExternalIDsObj) {
      return ExternalIDsObj.value;
    }).join(', ') + ('@email.com'); 
  }
          
  function getPhones(phones) { 
    return phones
      .map(phone => {
        const value = phone.value
        const type = phone.type.replace('_', ' ')
        return `${value} (${type})`
      })
      .join('\n');           
  }                                      
  
  function getDeviceName(arr) {
    return arr.map(function(OrganizationsObj) {
      return OrganizationsObj.costCenter;
    }).join(', ') ; //Cost Center = Device
  }
  
  
 function createHeaders() {
    var ss = SpreadsheetApp.openByUrl('https://docs.googlesheet.com');
    var sheet = ss.getSheets()[0];
  
    // Freezes  first row
    sheet.setFrozenRows(1);
    // header values
    var values = [
      ["NAME", "EMAIL", "PHONE NUMBER", "DEVICE"]
    ];
  
    // Set the range of cells
    var range = sheet.getRange("A1:D1");
  
    // Call the setValues method on range and pass in our values
    range.setValues(values);
  }

【问题讨论】:

    标签: javascript google-apps-script google-sheets spreadsheet


    【解决方案1】:

    有没有办法指定输出的主要函数 第 2 行

    writeToSpreadsheet():

    更改:

    SpreadsheetApp.openByUrl(spreadsheetUrl).getSheets()[0].getRange(1, 1, values.length, values[0].length).setValues(values);
    

    收件人:

    SpreadsheetApp.openByUrl(spreadsheetUrl).getSheets()[0].getRange(2, 1, values.length, values[0].length).setValues(values);
    

    此外,绝对没有理由在for 循环中多次执行createHeaders,因为您只需设置和冻结标题一次。


    writeToSpreadsheet的完整代码:

    function writeToSpreadsheet(){
        var values = [];
        var users = AdminDirectory.Users.list({domain:'domain.com'}).users; 
        for (var i=0; i<users.length; i++){
          values.push([users[i].name.fullName, getExternalID(users[i].externalIds || []), getPhones(users[i].phones || []),getDeviceName(users[i].organizations || []) ]);          
        }    
        createHeaders(); // modified position
        var spreadsheetUrl = 'docs.googlesheet.com';
        SpreadsheetApp.openByUrl(spreadsheetUrl).getSheets()[0].getRange(2, 1, values.length, values[0].length).setValues(values); // modified code    
      } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      相关资源
      最近更新 更多