将文本添加到数组值的输出

Add text to the output of values of an array

我刚开始学习 Apps 脚本,我需要向数组的每个值添加一些文本。此代码只是将值放在另一列中:

function getData() {
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet()
      .getSheetByName("Stocks");
  var symbol = sheet1.getRange('A1:A7').getValues();
  sheet1.getRange('C1:C7').setValues(symbol);
}

我想在输出中添加一些文本,如下所示:

function getData() {
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet()
      .getSheetByName("Stocks");
  var symbol = sheet1.getRange('A1:A7').getValues();
  sheet1.getRange('C1:C7').setValues(
      '=GOOGLEFINANCE("FRA:' + symbol + ")'
  );
}

但我知道这行不通。如何添加到正在写入的每个值?

使用循环遍历值数组

function getData() {
  var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Stocks");
  var symbol = sheet1.getRange('A1:A7').getValues();
  var destRange = sheet1.getRange('C1:C7');

  for (var i = 0; i < symbol.length; i++)
    symbol[i][0] = '=GOOGLEFINANCE("FRA:' + symbol[i][0] + '")');

  destRange.setFormulas(symbol);
}

由于范围 A1:A7C1:C7 的宽度和高度相同,您可以使用该数组然后使用 setFormulas(array) 当然,如果您只使用一次 symbol array 如果不是,则在循环之前声明一个空数组:

var resultArray = []

然后在你的 for 循环中执行:

 resultArray.push(['=GOOGLEFINANCE("FRA:' + symbol[i][0] + '")']);

然后在for循环外使用setFormulas():

destRange.setFormulas(resultArray);