2017-02-24 2 views
1
function setStrikeThru(range) { 
     var ss = SpreadsheetApp.getActiveSpreadsheet; 
     var sheet = SpreadsheetApp.getActiveSheet(); 
     var cell = sheet.getRange(range); 
     cell.setFontLine("line-through"); 
    } 
    // 
    function compareTwo() { 
    // strike through duplicates on user pages 
    //if on here 
     var sheetNameToWatch1 = "WEEKLY COMPLETED JOBS"; 
    //or here 
     var sheetNameToWatch2 = "PAST JOBS"; 
    //strikethrough here 
     var shtNames = ["0","Adia","Alejandra","Austin","Daniel","David L"]; 
    //loop through number of values in array 
     for(var j=1; j < shtNames.length; j++){ 
     var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    //use this sheet as values to check for 
     var sheet = ss.getSheetByName(sheetNameToWatch1); 
    //strike through on this sheet 
     var targetSheet = ss.getSheetByName(shtNames); 
    //count number of rows to check 
     var totalRows = sheet.getRange(targetSheet.getLastRow() + 1, 1); 
    //loop through number of rows 
     for (var i = 1; i < totalRows; i++){ 
      var cell = "C" + i; 
      var valToChk = sheet.getRange(cell) ; 
      if (sheet.getRange(cell)===targetSheet.getRange(cell)){ 
      setStrikeThru(targetSheet.getRange(cell)); 
      } 
     } 
     } 

私はこれに近いかどうか分かりません。Googleシートでは、すべてのシートの同じ列を列と比較しています。

基本的に私はメインシート「毎週完了したジョブ」を持っていますこのシートの列Cの値を他のすべてのシートの列Cと比較したいと思っています。ジョブ "

私は、行をコピーして値に基づいて移動する他のコードを書くことに成功しましたが、これに対してロジックを正しく取得できません。 Javascriptは私の母国語ではありません。高度なヘルプに感謝します。

答えて

1

範囲オブジェクトを比較していますが、これは機能しません。範囲から値を抽出し、値を比較するには、range#getValues()を使用する必要があります。以下はあなたを助けるかもしれない例です。

function compare() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var controlSheet = ss.getSheetByName("WEEKLY COMPLETED JOBS"); 
    var column = 3; 
    var firstValueRow = 2; 
    var lastRow = controlSheet.getLastRow(); 
    var controlValues = controlSheet.getRange(firstValueRow, column, lastRow).getValues(); 
    var sheetsToCheck = ["Adia", "Alejandra", "Daniel", "David L"]; 
    sheetsToCheck.forEach(function (sheetName) { 
    var sheetToCheck = ss.getSheetByName(sheetName); 
    if (!sheetToCheck) { 
     throw new Error("No sheet with name: " + sheetName); 
    } 
    var checkValues = sheetToCheck.getRange(firstValueRow, column, lastRow).getValues(); 
    for (var i = 0; i < controlValues.length; i++) { 
     controlValue = controlValues[i][0]; 
     if (controlValue) { 
     var checkValue = checkValues[i][0]; 
     if (controlValue === checkValue) { 
      sheetToCheck.getRange(i + firstValueRow, column).setFontLine("line-through"); 
     } 
     } 
    } 
    }); 
} 
+0

ありがとうございました。このプロジェクトは職場で保留になりました。私は本当に助けと方向性に感謝します。私はそれがどのように行くのか教えてあげるよ! – jaekma

関連する問題