1

行を別のシートの「四半期レポート」にコピーするために実装したスクリプトを次に示します。

その行を別のスプレッドシートにコピーするには、これをどのように記述すればよいでしょうか? 私は多くのバリエーションを試しました。

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var s = event.source.getActiveSheet();

  var r = event.source.getActiveRange();

  if(s.getName() == "Sheet1" && r.getColumn() == 73 && r.getValue()) {

    var row = r.getRow();

    var numColumns = s.getLastColumn();

    var targetSheet = ss.getSheetByName("Quarterly Report");

    if(targetSheet.getLastRow() == targetSheet.getMaxRows()) {
      targetSheet.insertRowAfter(targetSheet.getLastRow());
    }

    var target = targetSheet.getRange(targetSheet.getLastRow()+1,1);

    s.getRange(row, 1, 1, numColumns).copyTo(target);
  }
}
4

1 に答える 1

0

次のようなものを試すことができます:

/* CODE FOR DEMONSTRATION PURPOSES */
function onEdit(e) {
  var range = e.range, s = range.getSheet(), row = range.getRow();
  var sheetTarget, lastColumnTarget, lastColumnSource;
  if (e.value && s.getName() === 'Sheet1' && range.getColumn() === 73) {
    sheetTarget = e.source.getSheetByName('Quarterly Report');
    lastColumnSource = s.getLastColumn(), lastColumnTarget = sheetTarget.getLastColumn();
    lastColumnTarget = lastColumnTarget > lastColumnSource ? lastColumnTarget : lastColumnSource; 
    s.getRange(row, 1, 1, lastColumnTarget).copyTo(sheetTarget.getRange(row, 1, 1, lastColumnTarget));
  }
}

必要に応じて調整します。

于 2013-11-14T22:48:20.433 に答える