【问题标题】:Move a row from sheet to sheet with comments将一行从一个工作表移到另一个工作表并带有注释
【发布时间】:2018-03-27 09:32:42
【问题描述】:

我有以下脚本(1 年前实施的第一个脚本)将行从 1 个工作表移动到另一个工作表(在 google 工作表/工作簿中)。问题是它不带 cmets。有谁知道我如何在工作表到工作表的转换中包含任何未解决的 cmets?

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);    }  }

或者,如果您认为有更好更稳定的方法来完成此任务,请告诉我。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    使用 moveTo() 通过 cmets 剪切和粘贴范围。

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 2020-05-23
      • 1970-01-01
      相关资源
      最近更新 更多