4

Google スプレッドシート スクリプトで特定の名前の列のインデックスを取得する方法を見つけようとしています。

編集時にスプレッドシートにタイムスタンプを自動的に追加するカスタム Google スクリプトに取り組んでいます。現在のバージョンでは、タイムスタンプがアクティブ セルの行の最後の列に正常に追加されます。

特定の列名を使用して特別に指定された列にタイムスタンプを追加する、このスクリプトの新しいバージョンを作成したいと考えています。たとえば、スプレッドシートに「Last Updated」という名前の列を作成し、スクリプトでその列のインデックスを検出して、行の最後の列の代わりにタイムスタンプを自動的に追加したいとします。

これにより、タイムスタンプ列を好きな場所に配置でき、スクリプトが誤って重要なものをオーバーライドすることを心配する必要がなくなるため、これは私にとってはうまくいくでしょう。

私の現在のスクリプトは次のようになります。

function onEdit(event)
{ 
  var timezone = "GMT-4";
  var timestamp_format = "yyyy-MM-dd HH:mm:ss";
  var sheet = event.source.getActiveSheet();

  // note: actRng = the cell being updated
  var actRng = event.source.getActiveRange();
  var index = actRng.getRowIndex();
  var cindex = actRng.getColumnIndex();

  // Here is where I want to use a named column's index instead of the active row's last column.
  var dateCol = sheet.getLastColumn();
  //var dateCol = sheet.getColumnIndexByName('Last Updated');

  var lastCell = sheet.getRange(index,dateCol);
  var date = Utilities.formatDate(new Date(), timezone, timestamp_format);

  lastCell.setValue(date);
}
4

2 に答える 2

0

これは思ったより簡単でした!最後の 2 つの括弧の間:

var dateCol = headers[0].indexOf('Updated By');

  if (dateCol > -1 && index > 1) { // only timestamp if 'Updated By' header exists, but not in the header row itself!
    var cell = sheet.getRange(index, dateCol + 1);
    var Who = Session.getActiveUser();
    cell.setValue(Who);
  }
于 2019-05-25T15:39:51.230 に答える