【问题标题】:Store result to Google Spreadsheet from script将结果从脚本存储到 Google 电子表格
【发布时间】:2015-01-02 03:49:29
【问题描述】:

我有一个将数据输出到日志文件的代码。如何使此脚本将输出发送到电子表格而不是日志,并且每当运行脚本时,在电子表格中添加一个带有数据的附加工作表。工作表应根据脚本运行的日期和时间命名。

function listAllUsers() {
  var pageToken, page;
  do {
    page = AdminDirectory.Users.list({
      domain: 'mydomain.com',
      orderBy: 'givenName',

      pageToken: pageToken
    });
    var users = page.users;
    if (users) {
      for (var i = 0; i < users.length; i++) {
        var user = users[i];
        Logger.log('%s (%s)', user.name.fullName, user.primaryEmail);
      }
    } else {
      Logger.log('No users found.');
    }
    pageToken = page.nextPageToken;
  } while (pageToken);
}

问候

【问题讨论】:

标签: google-apps-script google-sheets


【解决方案1】:

这里有一个更简单的实现,见代码中的 cmets:

function listAllUsers() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.insertSheet(0);// create new sheet in first position
  sh.setName(Utilities.formatDate(new Date(),Session.getScriptTimeZone(),'MMM-dd-yyy@hh:mm:ss'));
  var data = [];// array to store values
  data.push(['user fullName', 'user primary Emai']);// store headers
  var pageToken, page;
  do {
    page = AdminDirectory.Users.list({
      domain: 'mydomain.com',
      orderBy: 'givenName',

      pageToken: pageToken
    });
    var users = page.users;
    if (users) {
      for (var i = 0; i < users.length; i++) {
        var user = users[i];
        Logger.log('%s (%s)', user.name.fullName, user.primaryEmail);
        data.push([user.name.fullName, user.primaryEmail]);//store in an array of arrays (one for each row)
      }
    } else {
      Logger.log('No users found.');
      data.push(['No users found.','--']);
    }
    pageToken = page.nextPageToken;
  } while (pageToken);
  sh.getRange(1,1,data.length,data[0].length).setValues(data);
}

【讨论】:

  • 谢谢,这似乎完美地解决了我的问题。
【解决方案2】:

以下是如何将数据放入工作表的示例:

//now write this data to the Detail spreadsheet
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var destSheet = spreadsheet.getSheetByName("Detail");
var destSheet2 = spreadsheet.getSheetByName("Summary");

//Clear values before pasting array data
destSheet.getRange(2, 1, 300, 20).clear();
destSheet2.getRange(2, 1, 50, 20).clear();

var numFormat = "0.00%"

//set spreadsheet values and apply conditional formatting.

for (var i = 2; i < (arrEmpCapDet.length + 2); i++) {
  destSheet.getRange(i, 1, 1, arrEmpCapDet[i-2].length).setValues(new Array(arrEmpCapDet[i-2]));
  destSheet.getRange(i, 1, 1, arrEmpCapDet[i-2].length).setNumberFormat(numFormat);
} 

for (var i = 2; i < (arrEmpCapSum.length + 2); i++) {
  destSheet2.getRange(i, 1, 1, arrEmpCapSum[i-2].length).setValues(new Array(arrEmpCapSum[i-2]));
  destSheet2.getRange(i, 1, 1, arrEmpCapSum[i-2].length).setNumberFormat(numFormat);
  //for each item in the row, check if the value is above 100% or below 50%, then change color.
  for (var p = 2; p < 16; p++) {
    var tmpValue = destSheet2.getRange(i, p).getValue();
    //Logger.log(tmpValue);
    if (tmpValue > 1.0)  {
     destSheet2.getRange(i, p).setBackground('red');
    }
    if (tmpValue < 0.5)  {
     destSheet2.getRange(i, p).setBackground('green');
    }
  }
} 

查看here 了解有关创建新工作表的信息。

【讨论】:

  • 真的看不出这段代码与问题有什么关系……你能解释一下你的想法吗?你确定你在正确的线程上发帖吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 2017-10-10
相关资源
最近更新 更多