You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script如何传递对象及对象键参数实现指定字段写入表格

在Google Apps Script中实现可复用的指定键值写入表格函数

我希望遍历数据并仅将特定键对应的值写入表格,不想在主函数中执行循环操作,而是将该逻辑交由可复用的其他函数处理。如何让print_data()函数实现与main()函数中相同的打印效果?

原代码示例:

function main() {

  const data = [{"key_1":10,"key_2":20,"key_3":30},{"key_1":40,"key_2":50,"key_3":60}];

  // Print data
  for (let i=0; i<data.length; i++) {
    const d = data[i];
    Logger.log([[d.key_1,d.key_3]]);
  }

  const keys = [[d.key_1, d.key_2]];
  print_data(data, keys);

}

function print_data(data, keys) {

  for (let i=0; i<data.length; i++) {
    const d = data[i];
    Logger.log(keys);
  }

}

解决方案

原代码的问题在于传递keys参数时错误地直接引用了对象属性,正确的做法是传递需要提取的键名数组。修改后实现可复用的函数,能够按指定键提取数据并写入表格:

function test_main() {

  const data = [{"key_1":10,"key_2":20,"key_3":30},{"key_1":40,"key_2":50,"key_3":60}];
  const keys = ["key_1","key_3"];

  print(data, keys);

}

function print(data, keys) {

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("Test");
  sheet.clear();

  for (let i=0; i<data.length; i++) {
    const arr = [keys.map(k => data[i][k])];
    sheet.getRange(i+1,1,1,keys.length).setValues(arr);
  }
}

关键修改说明

  • 传递keys时改为键名字符串数组["key_1","key_3"],而非直接引用对象属性
  • 在print函数中,使用keys.map(k => data[i][k])遍历指定键,提取对应的值组成数组
  • 写入表格时使用keys.length动态设置列数,增强函数通用性

内容的提问来源于stack exchange,提问作者Shantanu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:53:10