我有一个表格,其中一栏(第10栏)是一个下拉列表,有两种可能性:官方或非官方。我正在创建一个脚本,将此表导出到另一个具有此条件的表:第10列中每一行都必须复制为“非官方”(因此,在本例中,我们将有2行,一列是正式的,一行是非官方的)
这是我的密码:
const tab = active_sheet.getRange("A2:M14").getValues();
for (let nbline=0; nbline <tab.length;nbline++) {
if (tab[nbline][10] == "official") {我没有找到复制这一行的命令,保留所有信息,只需将第10列更改为“非官方”
例如,这是“选项卡”:
第1行:a、b、c、d、e、官方、f、h
第2行:1 2 3 4 5非官方6 7 8
第3行:x c v b x正式m l k
第4行:n j i o k非官方6 9 8
我想要这个:
第1行:a、b、c、d、e、官方、f、h
第2行:a、b、c、d、e、非正式、f、g、h
第3行:1 2 3 4 5非官方6 7 8
第4行:x c v b x正式m l k
第5行:x c v b x非官方m l k
第6行:n j i o k非官方6 9 8
如果有人能帮我
提前谢谢!
发布于 2022-04-18 23:21:00
剧本:
function myFunction() {
const active_sheet = SpreadsheetApp.getActiveSheet();
const tab = active_sheet.getRange("A2:M14").getValues();
var output = [];
// if we are checking the 10th column, column should be 9 instead (0-index),
// modify if needed.
var column = 10;
tab.forEach(row => {
output.push(row);
if(row[column] == "official")
// directly modifying row[10] and pushing row will result
// to the column having "non official" to all rows
output.push([...row.slice(0, column), "non official", ...row.slice(column + 1)]);
})
active_sheet.getRange(2, 1, output.length, output[0].length).setValues(output)
}示例:

输出:

注意:
[10],这是第11列。我直接修改了您的脚本,所以我使用了10,但是如果您真的想要第10列的话,可以随意地将列修改为9。当row[column]更改为"non official"并将相同的row或等同于row的变量推送时,会出现一些意想不到的问题。它正确地复制了行,但是列值都是"non official".tab范围中的所有行,以避免发生.https://stackoverflow.com/questions/71917319
复制相似问题