2017-10-15 103 views
0

將下面的腳本(1年前實現的第一個腳本)移動到另一個表單(在Google工作表/工作簿中)。問題是,它不會採取與它的意見。有誰知道我如何在從工作表到工作表的過渡中包含任何未解決的評論?將一行從表單移動到表單

var objSettings = { 
sheets : ['CHECK', 'STAGE2', 'READY', 'SCHEDULED', 'ARCHIVE', 'WASTE'], 
shActive : [1, 1, 1, 1, 1, 1], 
column : 1,} function onEdit(e) {try{var sh = e.range.getSheet();if (e.range.getNumRows() == 1 && e.range.getNumColumns() == 1 && e.range.getColumn() == objSettings.column) { 
    var sheetName = ''; 

    for (var i = 0; i < objSettings.sheets.length; i++) { 

     if (objSettings.sheets[i] == sh.getName().trim().toUpperCase()) { 

      if (objSettings.shActive[i] == 1) { 

       Logger.log(('' + e.value).trim().toUpperCase()); 
       Logger.log(sh.getName().trim().toUpperCase()); 

       if (('' + e.value).trim().toUpperCase() != sh.getName().trim().toUpperCase()) { 

        var shDest = e.source.getSheetByName(e.value); 

        if (!(shDest)) { 
         var shDest = e.source.getSheetByName(('' + e.value).trim().toProperCase()); 
        } 
        if (!(shDest)) { 
         var shDest = e.source.getSheetByName(('' + e.value).trim().toLowerCase()); 
        } 
        if (!(shDest)) { 
         var shDest = e.source.getSheetByName(('' + e.value).trim().toUpperCase()); 
        } 
        Logger.log(shDest); 
        if (shDest) { 

         var currRow = e.range.getRow(); 

         var dataDest = shDest.getDataRange().getValues(); 

         for (var j = 3; j < dataDest.length; j++) { 
          if (('' + dataDest[j][objSettings.column - 1]).length == 0) { 
           break; 
          } 

         } 

         var lastRow = j; 

         for (var k = 0; k < objSettings.sheets.length; k++) { 
          if (('' + e.value).trim().toUpperCase() == objSettings.sheets[k]) { 
           var type = objSettings.shActive[k]; 
           break; 
          } 

         } 

         var dataR = sh.getRange(currRow, 1, 1, sh.getLastColumn()).getValues(); 

         if (type == 1) { 
          shDest.getRange(lastRow + 1, 1, 1, dataR[0].length).setValues(dataR); 
         } else { 
          var dataR0 = dataR[0]; 
          dataR0.shift(); 
          shDest.getRange(lastRow + 1, 1, 1, dataR[0].length).setValues([dataR0]); 
         } 

         sh.deleteRow(currRow); 
         Logger.log(currRow); 
         Logger.log(lastRow + 1); 
         Logger.log(type); 

         sh.getParent().toast('The row has been moved!', 'Info'); 

        } 

       } 
      } 
      break; 
     } 
    } 

}}catch(e){ 
SpreadsheetApp.getUi().alert(e); } } 

另外,如果你認爲有一個更好的更穩定的方式來完成這個,請讓我知道。

回答

0

使用moveTo()來剪切和粘貼帶註釋的範圍。

CommentsDrive API的一部分。 EnableAdvanced Drive Service使用Drive.Comments.{}

然後你可以檢查status屬性"open" || "resolved"

function moveComments() { 
    var ss = SpreadsheetApp.getActive(); 
    var range_one = ss.getSheets()[0].getRange("A10"); 
    var range_two = ss.getSheets()[1].getRange("A10"); 

    // Get a list of all comments in the workbook 
    var workbook_comments = Drive.Comments.list(ss.getId()); 
    /* 
    var comment_cell_value = workbook_comments.items[0].context.value; 
    var check_status = workbook_comments.items[0].status; // "open" || "resolved" 
    */ 

    // Move the range with comments to another sheet.range 
    range_one.moveTo(range_two); 
} 
+0

我可以hlre你幫我返工的代碼? – ONM

相關問題