0

プロジェクト トラッカー ツールがあります。列 K には、タスクが完了したときのドロップダウン メニューがあります。ドロップダウン メニューには、タスクを「未配信」または「配信済み」として設定するオプションがあります。列 L をプログラムして、誰かがタスクを「配信済み」として選択するたびに、そのアクションのタイムスタンプを取得したいと考えています。どんな助けでも大歓迎です。

4

1 に答える 1

1

これは、スプレッドシートに添付されたスクリプトを使用して実行できます。Google Apps-ScriptinSpreadsheetsを初めて使用する場合はチュートリアルをご覧ください。

これがあなたが説明していることをするスプレッドシートの写真です:

作業用スプレッドシートのスクリーンショット

以下のスクリプトは、列Lのタイムスタンプを書き込むかクリアすることで、列Kの変更に反応します。スプレッドシートのすべての変更に対して呼び出されるため、最初に実行するのは、関心のある変更が発生したかどうかを確認し、発生しなかった場合は終了します。 。

/**
 * This function is an auto-trigger, because of its name. It will be
 * invoked on every change in the spreadsheet. The only change that
 * we're interested in is in Column K, and we want to put a timestamp
 * into Column L if the value selected for Column K is "Completed".
 */
function onEdit(event){
  var ColK = 11;  // Column Number of "K"

  var changedRange = event.source.getActiveRange();
  if (changedRange.getColumn() == ColK) {
    // An edit has occurred in Column K
    var state = changedRange.getValue();
    var adjacent = event.source.getActiveSheet().getRange(changedRange.getRow(),ColK+1);
    var timestamp = new Date(); // Get the current time
    // We'll do something different, depending on the selected value
    switch (state) {
      case "Completed":
        // Write timestamp into adjacent cell
        adjacent.setValue(timestamp);
        break;
      case "Not Completed":
        // Erase timestamp in adjacent cell
        adjacent.clearContent();
        break;
      default:
        // Something we didn't expect
        adjacent.setValue("*ERROR*");
        break
    }
  }
}

実行方法:このスクリプトは、1つのセルだけを変更したことを前提としています。つまり、複数のセルへの値のコピーは適切に処理されません。

于 2013-01-21T21:59:20.087 に答える