【问题标题】:Fetch text string from specific column and select range of that string and edit value从特定列中获取文本字符串并选择该字符串的范围并编辑值
【发布时间】:2020-07-05 00:11:17
【问题描述】:

我在下面分享了我的工作表。

我想匹配 A 列中的文本并返回或获取相应 B 列的值。

所以我可以使用相应 B 列中的 getValue 进行进一步的算术运算。

我试过下面的代码。其中我能够实现 B 列的 getValued 但无法更进一步。

我想要的输出在代码中注释。

工作表链接 = https://docs.google.com/spreadsheets/d/16Ox2h2CJKkMW59SFn8SPitUmNmURYSo9_HNoHrKuEmQ/edit#gid=578595593

function myFunction() {
var sheet=SpreadsheetApp.openById('16Ox2h2CJKkMW59SFn8SPitUmNmURYSo9_HNoHrKuEmQ').getSheetByName('Summary');
var sheet2 = SpreadsheetApp.openById('16Ox2h2CJKkMW59SFn8SPitUmNmURYSo9_HNoHrKuEmQ').getSheetByName('Updates');

var lastrow = sheet2.getLastRow();
var lastcolumn = sheet2.getLastColumn();

var type = sheet2.getRange(lastrow, 2).getValue();
var addv = sheet2.getRange(lastrow, 3).getValue();

var a =type;
var b =addv;

var matchText = type;
var values = SpreadsheetApp.openById('16Ox2h2CJKkMW59SFn8SPitUmNmURYSo9_HNoHrKuEmQ').getSheetByName('Summary').getDataRange().getValues();
var columnA =values.map(function(e){return e[0]});  
var row = columnA.indexOf(matchText);
var Bvalue = values[row][1];


Logger.log(Bvalue);


//here i want to write condition to add

if(row >= 0){

 //here i want if condition matched i would like to var addv in var Bvalue

}

else {

//here i would like to append new row where in column A var type will get appended and in corresponding B column var addv get appended

}


}

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    如果我对您的理解正确,您希望执行以下操作:

    • 从工作表Updates(B 和C 列)的最后一行检索信息。变量typeaddv
    • Summary 的A 列中查找与检索到的type 匹配的值。
    • 如果找到匹配项,则更新Summary 中相应行的B 列,将addv 添加到先前存在的数字中。
    • 如果未找到匹配项,请在Summary 中追加一个新行,其中包含typeaddv

    如果正确,您可以执行以下操作:

    function myFunction() {
      var ss = SpreadsheetApp.getActive();
      var sheet1 = ss.getSheetByName("Summary");
      var sheet2 = ss.getSheetByName("Updates");
      var type = sheet2.getRange(sheet2.getLastRow(), 2).getValue();
      var addv = sheet2.getRange(sheet2.getLastRow(), 3).getValue();  
      var values = sheet1.getDataRange().getValues();
      var columnA = values.map(function(e){return e[0]});  
      var index = columnA.indexOf(type);
      if (index == -1) { // If match is not found
        sheet1.appendRow([type, addv]); // Append row
      } else { // If match is found
        var rangeToUpdate = sheet1.getRange(index + 1, 2);
        rangeToUpdate.setValue(rangeToUpdate.getValue() + addv); // Add addv to corresponding value in column B
      }
    }
    

    注意:

    • 您的代码有很多重复,我将其最小化了一点。

    参考:

    【讨论】:

    • @lamblichus 感谢您更新我的脚本两次它运行良好现在它给了我错误 TypeError: Cannot read property '1' of undefined (line 18, file "Code")
    • @patu 我在发布之前对此进行了测试,所以这是有效的。确保完全按照我发布的方式复制脚本。我没有访问任何属性“1”,所以这个错误不能来自我共享的代码。很可能你没有删除这一行:var Bvalue = values[row][1];(我把变量名row改成了index
    猜你喜欢
    • 2021-03-10
    • 1970-01-01
    • 2020-08-14
    • 2013-11-20
    • 2017-05-25
    • 2016-07-08
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多