gpt4 book ai didi

javascript - 通过搜索/比较自动增加值并匹配谷歌表格脚本中的两列

转载 作者:行者123 更新时间:2023-12-04 09:45:14 25 4
gpt4 key购买 nike

我目前必须手动输入 Sheet1 B 列,但我想在每次脚本运行时自动增加它。

我正在使用 Google Sheets 脚本。

这部分正在工作。

这个怎么运作:
Sheet2 A列是从Sheet1 A列导入的下拉列表

如果 Sheet2 列 B 是今天日期的周年纪念表 2 列 F 会自动“重置”

工作脚本然后删除工作表 2 中的行,其中 F 是“重置”,并为每个行添加新行到底部

目前使用这个脚本

function writeupReset() {
var ss = SpreadsheetApp.getActiveSpreadsheet();

var s = ss.getSheetByName('Sheet2');
var r = s.getRange('C:C');
var v = r.getValues();

for(var i=v.length-1;i>=0;i--){
if(v[0,i]=='reset'){
s.insertRowsAfter(251,1);
s.deleteRow(i+1);
}
}
}

使用今天日期的工作位示例 - 6/2/20
      Sheet1                Sheet2  (before script)           Sheet2  (after script)

A B A B C A B C
|---------------| |-------------------------| |-------------------------|
1 | name | resets | 1 | name | date | delet | 1 | name | date | delet |
|---------------| |-------------------------| |-------------------------|
2 | bill | 1 | 2 | bill | 6/2/19 | reset | 2 | alex | 9/5/19 | |
|---------------| |-------------------------| |-------------------------|
3 | mark | 5 | 3 | alex | 9/5/19 | | 3 | adam | 11/6/19 | |
|---------------| |-------------------------| |-------------------------|
4 | holy | 2 | 4 | adam | 11/6/19 | | 4 | tony | 12/1/19 | |
|---------------| |-------------------------| |-------------------------|
5 | tony | 0 | 5 | mark | 6/2/19 | reset | 5 | | | |
|---------------| |-------------------------| |-------------------------|
6 | alex | 2 | 6 | tony | 12/1/19 | | 6 | | | |
|---------------| |-------------------------| |-------------------------|
7 | june | 1 | 7 | | | | 7 | | | |
|---------------| |-------------------------| |-------------------------|
8 | jack | 0 | to 252 rows (last two hidden) to 252 rows (last two hidden)
|---------------|
9 | adam | 2 |
|---------------|

那么当脚本删除 Sheet1 中的那些“重置”行时,如何编辑脚本以自动增加 Sheet1 列 B?

最佳答案

我相信你的目标如下。

  • 您想增加列“B”的值,即名称相同,在“Sheet1”中,当行带有 reset 时在“Sheet2”中被脚本删除。
  • 在您的情况下,“Sheet2”中的“A”列中包含相同的名称。
  • 您想通过修改问题中的脚本来实现这一点。

  • 为此,这个答案怎么样?

    retrofit 要点:
  • 在这种情况下,需要知道“Sheet1”的值并将它们与“Sheet2”的值进行比较。流程如下。
  • 删除“Sheet2”中的行。
  • 此时,将创建一个包含已删除行信息的对象。
  • 增加“Sheet1”中“B”列的值。
  • 使用对象更新“B”列的值,并将更新后的值放入工作表。

  • 当以上几点反射(reflect)到你的脚本中时,它变成如下。

    修改后的脚本:
    function writeupReset() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();

    // 1. Delete rows in Sheet2.
    var s = ss.getSheetByName('Sheet2');
    var r = s.getRange('A1:C' + s.getLastRow()); // Modified
    var v = r.getValues();
    var obj = {}; // Added
    for(var i=v.length-1;i>=0;i--){
    if(v[i][2] == 'reset') { // Modified
    s.insertRowsAfter(251,1);
    s.deleteRow(i+1);
    var name = v[i][0] // Added
    obj[name] = obj[name] ? obj[name] + 1 : 1; // Added
    }
    }

    // I added below script.
    // 2. Increase values of the column "B" in Sheet1.
    var sheet = ss.getSheetByName("Sheet1");
    var range = sheet.getRange("A2:B" + sheet.getLastRow());
    var values = range.getValues().map(([a, b]) => ([obj[a] ? b += obj[a] : b]));
    range.offset(0, 1, values.length, 1).setValues(values);
    }

    笔记:
  • 在这个修改后的脚本中,它假设“Sheet1”中“A”列的每个值都是所有值中的唯一值。从你的问题,我可以这样理解。
  • 如果“Sheet1”和“Sheet2”的工作表名称与您的实际情况不同,请修改它们。
  • 如果您的实际情况与问题中示例值的结构不同,则此修改后的脚本可能不起作用。所以请注意这一点。

  • 引用:
  • map()
  • setValues(values)
  • 关于javascript - 通过搜索/比较自动增加值并匹配谷歌表格脚本中的两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62155943/

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