google-apps-script - 如何自动从 Google 表格的上一行复制公式?
问题描述
我制作了一个简单的用户界面来获取用户数据。它获取一些条目,将其放入指定的数据库并清除表格。这很好用。虽然第 0 到 6 列是用户数据,但第 7 到 11 列是使用 0 到 6 数据的公式。我正在寻找一种解决方案,用户不必输入数据然后手动需要复制上述公式。我不想事先输入公式,因为我认为我会遇到问题,因为脚本会查找最后一行。
简而言之:它需要找到工作表上的最后一行,将数据写入新行并将第 7 到 11 列中的公式从其上方的行复制到新行。完全是菜鸟,这有意义吗?
function submitData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Form");
var datasheet = ss.getSheetByName("Database");
var values = [[formSS.getRange("d3").getValue(),
formSS.getRange("d5").getValue(),
formSS.getRange("d7").getValue(),
formSS.getRange("d9").getValue(),
formSS.getRange("d11").getValue(),
formSS.getRange("d13").getValue()]]
datasheet.getRange(datasheet.getLastRow()+1,1,1,6).setValues(values)
formSS.getRange("d3").clearContent();
formSS.getRange("d5").clearContent();
formSS.getRange("d7").clearContent();
formSS.getRange("d9").clearContent();
formSS.getRange("d11").clearContent();
formSS.getRange("d13").clearContent();
}
解决方案
有几个选项可以解决您的任务:
选项1:为要插入的行生成数据数组时,可以从上一行读取公式,并在插入前将它们添加到数组中
...
var values = [formSS.getRange("d3").getValue(),
formSS.getRange("d5").getValue(),
formSS.getRange("d7").getValue(),
formSS.getRange("d9").getValue(),
formSS.getRange("d11").getValue(),
formSS.getRange("d13").getValue()],
lastRow = datasheet.getLastRow(),
formulas = datasheet.getRange(lastRow,7,1,5).getFormulasR1C1();
datasheet.getRange(lastRow+1,1,1,11).setValues([[...values,...formulas[0]]])
...
选项 2。您可以直接在脚本中插入公式,而无需从工作表中读取它们
...
var values = [[formSS.getRange("d3").getValue(),
formSS.getRange("d5").getValue(),
formSS.getRange("d7").getValue(),
formSS.getRange("d9").getValue(),
formSS.getRange("d11").getValue(),
formSS.getRange("d13").getValue(),
'=FormulaR1C1 for column 7',
`=IMPORTXML(R1C2&R[0]C[-6]&"/","//div[@class='priceValue ']")`,
'=FormulaR1C1 for column 9',
'=FormulaR1C1 for column 10',
'=FormulaR1C1 for column 11',]]
datasheet.getRange(datasheet.getLastRow()+1,1,1,11).setValues(values)
...
推荐阅读
- swift - CloudKit 无法删除资产文件的无法理解的错误
- ios - 如何使用宽度的框架修饰符使多列列表中的 1 列具有相同的宽度,以保持灵活性
- arrays - 可扩展单元格 numberOfRowsInSection 和 Section
- c# - VS 2019 安装包自动更新依赖项 - 如何恢复?
- r - 在最后一次出现特殊字符后提取所有文本
- python - python - 如何用空格分割字符串,不包括Python中双引号之间的空格?
- netlogo - Netlogo-如何每 30 个滴答执行一次程序
- ios - 构建成功,但存档抛出 GoogleDataTransport 错误。xcode12
- flutter - 你如何使用flutter_bloc包做Rx.CombineLatestStream
- react-native - react-native 应用程序中的多个 axios 请求:最佳实践