是否可以检查列范围内的某些数据?

问题描述 投票:1回答:1

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

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

电子表格B中的第一列包含电子表格A中所有工作表的超链接。我需要按以下方式检查电子表格B中的超链接列:如果A列中存在超链接,检查Spreadsheet A索引中的下一张表++其他在最后一行之后的一行中记录新数据,,,,

我的代码以前具有clear()函数,可以从头开始向Spreadsheet B提交,但这在执行时间上效率不高。我正在尝试操纵当前代码以手动检查现有记录,并根据此逻辑i ++ / submit new row。

您可以忽略所有缺少的代码行,因为我可以正常运行,我只需要这样做的逻辑,因为我在Apps Script中不高级。预先感谢您的帮助。


电子表格A-Sheet1SpreadsheetA-sheet1


电子表格A-Sheet2SpreadsheetA-sheet2


电子表格B

Workbook B Log


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

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();
if-statement google-apps-script google-sheets match
1个回答
0
投票

尝试一下:

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]);
    } 
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.