0

次の問題を解決できますか??? app script / javascript はかなり新しく、理解するためのヘルプやガイダンスをいただければ幸いです..

TypeError: オブジェクト Timestamp に関数オフセットが見つかりません (その後、赤い警告バナーに列見出しが表示され続けます。

function uiSendLogEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var data = sheet.getDataRange().getValues();
  data = data.offset(1,0,data.getNumRows())-1;


// For Loop

for ( var i = 0; i < data.length; i++ ) {
var row = data[i];
var approved = row[5];
var sentEmail = row[6];
var snapshot = row[3];

//if stmt in For Loop
if ( approved != "Yes" ) {              
  data[i][5] = "Yes";
  data.getDataRange().setValues(data);
      }// if stmt end curly 
else if ( approved == "Yes" && sentEmail != "Yes" ) {
  data[i][6] = "Yes";
  data.getDataRange().setValues(data);
  GmailApp.sendEmail("email@email.com", "subject", "body" + "whatever " + snapshot);
}//else if end curly
else {
return;
}//else stmt end curly

}// for loop end curly


 }
4

2 に答える 2

1

私はいくつかの基本的な微調整を行い、うまくいけば正しい方向に向けることができます(そして、メソッドの@AdamLに感謝します.shift()-以前に持っていたものよりもはるかに優れています:)):

function uiSendLogEmail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var data = sheet.getDataRange().getValues();

  // Move the values down
  data.shift();

  // For Loop
  for ( var i = 0; i < data.length; i++ ) {
    var row = data[i];
    var approved = row[5];
    var sentEmail = row[6];
    var snapshot = row[3];

    // Here we set a range equal to the data range offset by 1 + our current
    // position in the loop (cycling through rows), and then get the A1 notation
    // of the first row, which we use to get that particular range and prep 
    // it for adding values
    var rng = sheet.getDataRange().offset(i+1,0,1).getA1Notation();
    myRange = sheet.getRange(rng);

    //if stmt in For Loop
    if ( approved != "Yes" ) {
      // Here we can just work with the row element itself
      row[5] = "Yes";
      // Because setValues expects a two dimensional array, 
      // we wrap our row in brackets to effectively convert it to one
      myRange.setValues([row]);
    }  // if stmt end curly 
    else if ( approved == "Yes" && sentEmail != "Yes" ) {
      // Same here as above
      row[6] = "Yes";
      myRange.setValues([row]);
      GmailApp.sendEmail("email@email.com", "subject", "body" + "whatever " + snapshot);
    }
    else {
      return;
    }
  }
于 2012-10-27T08:19:51.053 に答える
0

データの最初の行 (ヘッダー) を削除したいと考えています。その場合は、次のように置き換えてみてください。

data = data.offset(1,0,data.getNumRows())-1;

data.shift();
于 2012-10-27T07:12:17.923 に答える