javascript - 谷歌工作表脚本 - 将行值复制到最后使用的行
问题描述
基本上我需要帮助将第 2 行的内容复制到最后使用的行范围 A2:AC2 (如果复制粘贴整个第 2 行则不是问题)
我已经有一个脚本可以将行追加到最后一个未使用的行,我想要的是不必手动编辑它,以防我需要更新这些值
找到了一个脚本来获取最后使用的行,但它返回行号
function getLRI() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Fund');
var lr = getLastRowIndex(ss,'A1:AC');
Logger.log (lr);
}
function getLastRowIndex(sheet,rangeString) {
var rng = sheet.getRange(rangeString).getValues();
var lrIndex;
for ( var i = rng.length-1;i>=0;i--){
lrIndex = i;
if(!rng[i].every(function(c){ return c == ""; })){
break;
}
}
return lrIndex + 1;
}
的输出Logger.log (lr)
;
[20-10-30 16:35:33:460 BRT] 47.0
所以我得到了正确的行号,但没有设法弄清楚在这种情况下如何制作.getRange()
和.setValues
工作
解决方案
解释:
解决方案比您想象的要简单得多。
您不需要创建自定义函数来计算工作表中包含内容的最后一行,因为 Google 提供了一个内置函数来完成这项工作,这就是getLastRow()。
以下脚本将
A2:AC2
使用getRange(row, column, numRows, numColumns)获取范围内的数据,并将使用setValues()设置最后一行之后的值。
解决方案:
function myFunction() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Fund');
const data = sh.getRange(2,1,1,29).getValues(); // A2:AC2
sh.getRange(sh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}
推荐阅读
- google-cloud-platform - 使用 XCom 通过 GoogleCloudStorageToBigQueryOperator 在 Airflow 中加载 Schema
- android - Android:如何制作特殊的recyclerview布局
- observable - 当我尝试编译时,我不断收到这个错误类不是抽象的,并且没有覆盖 MyObserver 中的抽象方法 update(Object)
- strftime - 如何编写符合 Flake8 的 strftime 表达式?
- javascript - 如何将 Google Analytics api 响应放入工作表中?
- aws-amplify - 放大 @model 语法以仅生成创建和更新突变(而不是删除)
- vuejs2 - 使用 Nuxt.js 将事件传递给父组件
- java - 在添加之前检查 ArrayList 中元素的 ID 是否已经存在
- javascript - 使用javascript在表格中移动图像
- c# - 如何显示带有图片和一些文本区域的 ListView?