【问题标题】:Is there a way to check over a column range for a certain data?有没有办法检查某个数据的列范围?
【发布时间】:2019-10-27 14:02:29
【问题描述】:

我有 2 个工作簿, 电子表格 A 有多个相同形式的工作表。

电子表格 B 记录包含电子表格 A 工作表中的单元格,每个工作表有一行(日志)。

电子表格 B 中的第一列包含电子表格 A 中所有工作表的超链接。我需要检查电子表格 B 中的超链接列,如下所示: 如果 A 列中存在超链接, 检查电子表格 A index++ 中的下一张表 别的 在最后一行之后的一行记录新数据,,,,

我的代码曾经有 clear() 函数从头开始提交到电子表格 B,但它效率不高,执行时间明智。 我正在尝试操纵我当前的代码以手动检查现有记录并根据此逻辑 i++/提交新行。

你可以忽略所有缺失的代码行,因为我已经让它工作了,我只需要这样做的想法的逻辑,因为我在 Apps 脚本方面并不先进。提前感谢您的帮助。


电子表格 A - Sheet1


电子表格 A - Sheet2


电子表格 B


我希望 if 语句在工作簿 B 中的工作表链接列上运行......如果将工作表 #3 添加到工作簿 A(图 1 和 2),提交后,我想检查工作簿 B 中的工作表链接日志(因为它是唯一的)如果存在,i++....如果不存在,在日志中添加第三条记录。

for(var index = 2; index < WBA.length; index++) 
  {
    var Sheet   = "https://docs.google.com/spreadsheets/d/WBA ID/edit#gid=";
    var SID     = WBA[index].getSheetId();
    var SheetID = Sheet + SID;
    var Data    = WBB.getDataRange().getValues();

    for(var i = 0; i < Data.length; i++)
    {
      if(Data[i][1] == SheetID)
        i++

      else
      {

    var lastRow = WBB.getLastRow() + 1;

    var Sheets_ID   = new Array()

    Sheets_ID.push( [WBA[index].getSheetId()] )
           WBB.getRange(lastRow,1).setFormula('=hyperlink("https://docs.google.com/spreadsheets/d/WBA ID/edit#gid=' + Sheets_ID +'")');

    var PN_Source    = WBA[index].getRange(6,3,1,1).getValues();      //getRange(row number, column number, number of rows, number of columns)
    var SC_Source      = WBA[index].getRange(8,3,1,1).getValues();

【问题讨论】:

  • 我认为有示例电子表格会很有帮助
  • @Cooper 不幸的是,这是一个非常机密的文件,我无法与任何人共享这两张表,不过感谢您抽出宝贵时间回复:)
  • 然后制作示例文件,因为此时我很乐意为您提供帮助,但我不明白您要完成什么。
  • 看看这个人做了什么来澄清他的问题。 stackoverflow.com/questions/58570448/…
  • @Cooper 我在下面添加了 3 个示例截图和说明,以更好地说明这个想法。感谢您的热心帮助:)

标签: if-statement google-apps-script google-sheets match


【解决方案1】:

试试这个:

function checkForLink() {
  var ssB=SpreadsheetApp.getActive();
  var sh1=ssB.getActiveSheet();
  var rg1=sh1.getRange(1,1,1,4);
  var vA1=rg1.getValues()[0];
  var hObj={};
  vA1.forEach(function(el,i){if(el){hObj[el]=i;}});
  var linkA=sh1.getRange(2,hObj['Sheet Link']+1,sh1.getLastRow(),1).getValues().map(function(r){return r[0];});
  var ssA=SpreadsheetApp.openById('SSA ID');
  var shts=ssA.getSheets();
  shts.forEach(function(sh,i){
    var vA=sh.getRange(1,1,2,sh.getLastColumn()).getValues();
    var sObj={};
    vA[0].forEach(function(e,i){sObj[e]=i;});
    var shlink=Utilities.formatString('https://docs.google.com/spreadsheets/d/%s//edit#gid=%s',ssA.getId(),sh.getSheetId());
    if(linkA.indexOf(shlink)==-1) {
      sh1.appendRow([vA[1][sObj.date],vA[1][sObj.age],vA[1][sObj.name],shlink]);
    } 
  });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2011-01-15
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    相关资源
    最近更新 更多