3

我正在尝试创建一个函数来从谷歌财务中提取数据并让它自动将数据记录到文档的多张纸上。我似乎无法让它添加一个函数作为一个函数它总是将它添加为文本,直到我编辑单元格

function addLog() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var numLastRows = rows.getLastRow();

  sheet.appendRow(['2012/10/28','=b92','=c92','Log (auto)','','=index(GoogleFinance(C92,"price",A92);2;2)','','=h92','=i92','=j92','=k92']);


};

我也不知道如何让它引用上面的单元格(在这种情况下为第 92 行):(

4

1 回答 1

2

您将需要使用setFormula()方法而不是appendRow(). 也许是这样的:

function addLog() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var numLastRow = sheet.getLastRow();

  //add a row at end if necessary
  if (sheet.getMaxRows() == numLastRow) sheet.insertRowAfter(numLastRow);

  sheet.getRange(numLastRow + 1, 2, 1, 10)
    .setFormulas([['=b' + numLastRow,
                  '=c' + numLastRow,
                  '',
                  '',
                  '=index(GoogleFinance(C' + numLastRow + ',"price",A' + numLastRow + ');2;2)',
                  '',
                  '=h' + numLastRow,
                  '=i' + numLastRow,
                  '=j' + numLastRow,
                  '=k' + numLastRow]]);
  sheet.getRange(numLastRow + 1, 1).setValue('2012/10/28');
  sheet.getRange(numLastRow + 1, 4).setValue('Log (auto)');
}

要从第 x 个工作表到第 y 个工作表执行此操作(使用从零开始的索引),我认为最有效的方法是:

function addAllLog() {
  var sheets = SpreadsheetApp.getActive().getSheets();
  var x = 1;
  var y = 34;
  for (var i = x; i <= y; i++) {
    addLog(sheets[i]);
  }
}

function addLog(sheet) {
  var numLastRow = sheet.getLastRow();

  //add a row at end if necessary
  if (sheet.getMaxRows() == numLastRow) sheet.insertRowAfter(numLastRow);

  sheet.getRange(numLastRow + 1, 2, 1, 10)
    .setFormulas([['=b' + numLastRow,
                  '=c' + numLastRow,
                  '',
                  '',
                  '=index(GoogleFinance(C' + numLastRow + ',"price",A' + numLastRow + ');2;2)',
                  '',
                  '=h' + numLastRow,
                  '=i' + numLastRow,
                  '=j' + numLastRow,
                  '=k' + numLastRow]]);
  sheet.getRange(numLastRow + 1, 1).setValue('2012/10/28');
  sheet.getRange(numLastRow + 1, 4).setValue('Log (auto)');
}
于 2012-10-28T21:38:22.347 回答