【问题标题】:Copy Paste into formula as apps script将粘贴复制到公式中作为应用程序脚本
【发布时间】:2021-10-22 05:00:45
【问题描述】:

我正在尝试运行一个谷歌应用程序脚本,该脚本采用一系列 importrange 函数并将它们放入 arrayformula 查询中。我已经成功创建了一个单元格,该单元格主动积累了在 importrange 中使用的正确链接,并将其作为字符串放入单元格中。我需要脚本做的就是复制该字符串并将其作为公式粘贴到另一个单元格中。我可以很容易地手动执行此操作,但我希望能够在计时器上设置它,以便它在特定时间段内自动执行。

据我所知,它根本不起作用:

function Update Import Ranges() {
  var spreadsheet = SpreadsheetApp.getActive();
  var source = spreadsheet.getRange('B2').activate();
  spreadsheet.getCurrentCell('B3').setFormula(???);
  spreadsheet.getRange('B3').activate();
};

【问题讨论】:

  • 欢迎来到Stack Overflow。考虑共享一个可公开编辑的sample spreadsheet,其中包含逼真的数据,并在那里显示您手动输入的预期结果。

标签: google-apps-script


【解决方案1】:

累积正确的链接以在导入范围中使用,并将其作为字符串放入单元格中

importrange() 函数只接受两个参数:一个用于读取电子表格,另一个用于指定要返回电子表格中的哪个范围。要使用 importrange() 从多个电子表格和/或范围中读取数据,您必须创建多个公式。

或者,使用模仿 importrange() 但支持多个电子表格和范围的 Apps 脚本函数,例如 ImportMultipleRanges() 函数。你可以这样称呼它:

function updateDataFromOtherSpreadsheets() {
  var rangeToUpdate = "All Data!A2";
  var sourceSpreadsheetKeysRange = "Config!B2:B5";
  var sourceSpreadsheetDataRange = "Config!C2:C5";
  var add_spreadsheet_name_prefix = false;
  var add_sheet_name_prefix = false;
  var ignore_blank_rows = true;

  var ss = SpreadsheetApp.getActive();
  var spreadsheet_keys = ss.getRange(sourceSpreadsheetKeysRange).getValues();
  var range_strings = ss.getRange(sourceSpreadsheetDataRange).getValues();

  var data = ImportMultipleRanges(spreadsheet_keys, range_strings, add_spreadsheet_name_prefix, add_sheet_name_prefix, ignore_blank_rows);

  ss.getRange(rangeToUpdate).offset(0, 0, data.length, data[0].length).setValues(data);
}

要回答您的问题,您可以像这样修复函数中的语法错误和语义:

function updateImportrangeFormula() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const ssId = sheet.getRange('B2').getValue();
  const rangeA1 = sheet.getRange('C2').getValue();
  const formula = '=importrange("' + ssId + '", "' + rangeA1 + '")';
  sheet.getRange('B3').setFormula(formula);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多