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
相关产品推荐
相关产品推荐

