google-apps-script - 试图制作一个脚本来将两个表添加在一起
问题描述
我正在尝试将两个表的值相加,并将它们放入其中之一。我有表 1 和表 2,我想将它们一起添加到表 1 中。我目前有一个表格,但它不太工作。
var ss = SpreadsheetApp.getActiveSheet();
var num1 = ss.getRange('C53:G72').getValue();
var num2 = ss.getRange('C5:G24').getValue();
ss.getRange('C5:G24').setValue(num1+num2);
ss.getRange('C53:F71').setValue("0");
它只添加单元格 C5 和 C53 的值,然后粘贴到 C5:G24 中,这很奇怪。我是否必须手动添加每个单元格而不是使用 C5:G24 和 C53:G72 对其进行概括?
解决方案
是的,您需要手动添加每个单元格中的值
Range.getValue
如文档中所述,仅返回所提供范围内的左上角单元格
返回范围内左上角单元格的值。该值可能是数字、布尔值、日期或字符串类型,具体取决于单元格的值。空单元格返回一个空字符串。
Range.setValue
应该只影响一个单元格,但文档中没有说明。
您可能感兴趣Range.getValues
,Range.setValues
因为这些方法允许您一次选择和更新多个单元格值
var ss = SpreadsheetApp.getActiveSheet();
var rangeA = ss.getRange( 'C53:G72' );
var rangeB = ss.getRange( 'C5:G24' );
var rangeC = ss.getRange( 'C53:F71' );
var rangeAValues = rangeA.getValues();
var rangeBValues = rangeB.getValues();
var rangeCValues = rangeC.getValues();
for ( var row in rangeAValues ) {
for ( var col in rangeAValues[ row ] ) {
rangeAValues[ row ][ col ] = ( +rangeAValues[ row ][ col ] || 0 ) + ( +rangeBValues[ row ][ col ] || 0 ); // Ensure that the result is numeric
}
}
rangeB.setValues( rangeAValues );
// Assuming that you want to fill C53:F71 with "0"s
for ( var row in rangeCValues ) {
for ( var col in rangeCValues[ row ] ) {
rangeCValues[ row ][ col ] = "0";
}
}
rangeC.setValues( rangeCValues );
请注意,单个setValues
比多个更有效setValue
https://support.google.com/docs/thread/42793831
推荐阅读
- numpy - 带有多个参数的 numpy 的 exp 是什么?
- c# - LINQ to Entities 无法识别方法“System.String SetAssetStatus(Int32)”方法
- css - 如何在自适应卡片上使用 CSS 样式?
- python - 循环遍历二维数组 Python
- eclipse - 从类访问 eclipse 插件 commandid 值
- java - 如何在 docker 中运行 maven selenium 项目(Maven + Selenium + java + TestNg + docker)
- html - Bootstrap 列在小屏幕尺寸(移动设备)中不响应
- azure-devops - Azure Devops 构建策略
- django - Django - 查询 CharFields 忽略变音符号
- python - 如何管理 csv.reader() 中的标题?