【问题标题】:Google Sheets: adjusting targetrange and adding conditon to sourcerangeGoogle表格:调整目标范围并向sourcerange添加条件
【发布时间】:2021-10-11 05:02:30
【问题描述】:

以下脚本每小时运行一次,用于将新票证从“注入”选项卡添加到“今天”选项卡(这是从另一张表中导入的范围,每 15 分钟更改一次)。我想添加两个我一直在努力的额外步骤

  1. 目标范围应该是目标工作表(G 列)中的下一个空闲行,目前它是一个固定值,会覆盖现有数据。更复杂的是,目标工作表每天晚上 00:00 都会被擦干净,这意味着第一个空闲行将恢复为 G7。

  2. 源范围应该只取 X 列中包含文本“New”的值,目前它不加选择地提取所有值

提前感谢您的任何建议或支持

    function tickets(){ 

var sourceSheet = "Injection" ;
var sourceRange = "A4:N504" ; 
var targetSheet = "Today" ; 
var targetRange = "G7:T507" ;

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName(sourceSheet); 
var values = sheet.getRange(sourceRange).getValues(); ss.getSheetByName(targetSheet).getRange(targetRange).setValues(values); 

}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:
    function tickets(){ 
    
      const sourceSheet = "Injection" ;
      const targetSheet = "Today" ; 
    
      const ss = SpreadsheetApp.getActiveSpreadsheet(); 
      const ssh = ss.getSheetByName(sourceSheet); 
      const tsh = ss.getSheetByName(targetSheet); 
    
      const lock = LockService.getDocumentLock()
        
      try{
        lock.waitLock(15000);
      
        SpreadsheetApp.flush()
        const COL_X_INDEX = 23;
        const newValues = ssh.getDataRange().getValues().filter(row=>row[COL_X_INDEX]==='New');
        
        if(newValues.length>0){
            const lastRow = tsh.getRange('G:G').getDataRegion().getValues().length()
            const targetRange = tsh.getRange(lastRow+1,1,newValues.length, newValues[0].length)
            targetRange.setValues(newValues)
        }
      } finally{
        lock.releaseLock()
      }
    }
    

    【讨论】:

    • 感谢您的回复,这很好用,唯一的问题是它需要输出到 G 列中的第一个空单元格,如上所示,它在 A 列输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多