跨多个范围运行IF脚本

时间:2016-11-01 21:52:31

标签: google-apps-script google-sheets

我已经整理了一个脚本,该脚本连续获取4个单元格的值,A23:E23,如果该行中的特定(H3)单元格包含文本&#34,则复制其他工作表中的值实况#34 ;.

脚本需要每天运行,据我所知,我可以轻松完成,但它还需要使用包含值的第23行下面的每一行,并使用 reportData ifd 变量分别工作。即。

var reportData = reportSheet.getRange("A24...A25...A26:E24...E25...E26").getValues();
var lastRow = recordsSheet.getLastRow();
var ifd = reportSheet.getRange("H24...H25...H25").getValue(); 

此脚本背后的想法是捕获Sheet1中值的每日快照,因为值会不断更新,但作为累积数字。我需要记录这些累积数据的每日记录。

function appendToRecords() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var reportSheet = ss.getSheetByName("Sheet1");
var recordsSheet = ss.getSheetByName("database")
var reportData = reportSheet.getRange("A23:E23").getValues();

var lastRow = recordsSheet.getLastRow();
var ifd = reportSheet.getRange("H23").getValue();  

  if (ifd == "Live"){
   recordsSheet.getRange("A2:E2")
          .setValues(reportData);  }}

有人可以建议这样做吗?

这是脚本使用的示例表:https://docs.google.com/spreadsheets/d/1FMlj_9l7Sm0QMKcFpbC4iExbATgPL0jIWoVrvV_Vcfw/edit?usp=sharing

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以轻松记录所有" live"像这样的行到你的数据库:

function appendToRecords() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var reportSheet = ss.getSheetByName("Sheet1");
  var recordsSheet = ss.getSheetByName("database")
  var reportData = reportSheet.getRange("A8:H").getValues();

  // Get only rows that are "Live"
  // And only get the first five colums
  var toWrite = reportData.filter(function(row) {
    return row[7] === "Live"; 
  }).map(function(row) {
    return row.splice(0, 5);
  });

  if(!toWrite.length) {return;} // Return if nothing to write

  recordsSheet
      .getRange(recordsSheet.getLastRow() + 1, 1, 
                toWrite.length, toWrite[0].length)
      .setValues(toWrite);
}