gpt4 book ai didi

javascript - 谷歌应用脚​​本: Copy cell value to another sheet with condition to copy and position the value

转载 作者:行者123 更新时间:2023-11-28 19:04:14 25 4
gpt4 key购买 nike

我有一个包含 4 个工作表的电子表格:“列表”、“ map N1”、“ map N2”和“ map N3”。它应该作为金属单元沉积的控制。

“列表”有以下几列:

-MU(金属单位)

-重量

-位置(级别)

-位置(字母)

-位置(数字)

-到达日期和时间

-出发日期和时间

-目的地

-状态

-观察结果

当 MU 到达时,输入数据并且“状态”列接收“等待定位”作为值。当 MU 位于矿床内时,“状态”更改为“已定位”。我需要做的是:

-当“状态”更改为“已定位”时,根据“位置(级别)”将相应 MU 列的值复制到其中一张 map 。如果“位置(级别)”是“N1”,则转到“ map N1”,“N2”转到“ map N2”,依此类推。

- map 表如下所示: Map sheet

-MU 值应根据“位置(字母)”和“位置(数字)”值在工作表中定位。这样,下面的 MU 就应该像下图一样进入工作表: List and Map sheet

我已经搜索并设法找到了这段代码:

function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "List" && r.getColumn() == 9 && r.getValue() == "Posicionada") {
var targetSheet = ss.getSheetByName("Map N1");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(1, 1, 1, 1).copyTo(target);
}
}

我们的想法是使用这段代码来弄清楚如何自动复制值,然后使其适应定位。但这甚至没有将值复制到另一个工作表。

最佳答案

您可以使用setValue()代替moveTo/copyTo

 targetSheet.getRange(row,column).setValue(s.getRange(r.getRow(), 1, 1, 1).getValue()); 

如果您需要的话,这是其余的代码。

它基本上使用单元格中的引用来获取正确的工作表、列和行。由于您的列不是原始的,因此我添加了一个循环来循环遍历 map 工作表上的第一行并找到正确的列。

function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.range;
if(s.getName() === "Lista" && r.getColumn() === 9 && r.getValue() === "Posicionada") {
var sheetname = s.getRange(r.getRow(),3).getValue();
var columnRef = s.getRange(r.getRow(),4).getValue();
var rowref = s.getRange(r.getRow(),5).getValue();
var targetSheet = ss.getSheetByName("Mapa " + sheetname);
var headers = targetSheet.getRange(1, 1, 1, targetSheet.getLastColumn()).getValues().toString().split(",");
var rows = targetSheet.getRange(1, 1, targetSheet.getLastRow(), 1).getValues().toString().split(",");

//Getting The correct Column
for (var i = 1; i < headers.length; i++) {
if (headers[i] === columnRef) {
break;
}
}

var column = i + 1;

//Getting the correct row
for (var i = 1; i < rows.length; i++) {
if (Number(rows[i]) === rowref) {
break;
}
}

var row = i + 1;

targetSheet.getRange(row,column).setValue(s.getRange(r.getRow(), 1, 1, 1).getValue());
}
}

关于javascript - 谷歌应用脚​​本: Copy cell value to another sheet with condition to copy and position the value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31996447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com