Record Date Started when Status changes

I have a [Status] column with {Not Started}, {In Progress}, and {Done}.

  • When it changes to {In Progress}, I want it to record the current Date/Time in a [Date Started] column.
  • If I change it back to {Not Started}, I want it to clear the date.
  • If I change it to {Done} without ever selecting {In Progress} I want it to record the date then.
  • If I change it from {In Progress} to {Done}, I don’t want it to update the date.

Seems simple enough, here was my best guess at an elegant solution:

I created a [Started] Checkbox column that checks automatically if [Status] is one of {In Progress} or {Done}, then I put this formula into my [Date Started] column calculation: If(thisRow.Started=True(),Modified(thisRow.Started),“”).

This didn’t work and I’m not sure why…
I’m guessing it’s because the [Started] Checkbox column was ‘changed’ by it’s calculation but was not ‘modified’ manually by me.

I’m sure I could use an automation, it’s a hidden column anyway; I just usually try to avoid them if possible for inputting due to the delay.

Maybe the solution is simpler than I’m making it out to be, but I’m stumped. If the only way to accomplish this currently is with automation that’s fine, I would definitely recommend either adding a “Changed” function for this scenario, or extending the “Modified” function to encompass changes made by calculation the same as those made by the user.

1 Like

Hi Truitt

Welcome to the community!

What I would do in this instance is to have two button columns

  • “status change button - down”
  • “status change button - up”

In the button you will then have a small piece of code in a runaction, that will check the current status and then

  • move the status as needed
  • update the date column as needed.
1 Like

This doesn’t allow me to switch the status from the cards (or board) view. This is critical for my task management.

I’m afraid automations would probably be the way to go then. [Started] won’t record any info for Modified() to use, you’d have to give it the [Status] instead but then your target logic probably fails: If(thisRow.Started, Modified(thisRow.Status), "").

Hi Truitt

Why do you say it will not work from the Card view?

In the image below I use the green button to archive last week’s comments, and create a new entry with today’s date and my name.

It should work for what you have in mind as well.

R
P

1 Like

Sorry, board view.

I mean that if I group by status, I can’t drag the card from Not Started → In Progress → Done to change the status and still have it update when it started.

That is why the buttons are there, to change the status.
No need for dragging.

I hear what you’re saying, it’s just not the most elegant solution IMO. I usually prefer to not have to go an extra step to accomplish something. If my brain is going to intuitively think “change the status from the dropdown” I don’t want to have to remember that it’s actually controlled from some other button.

Same thing with moving cards, naturally I think, “okay, now drag to the next bucket” and I would then have to have another button on the card and remember to click it to initiate the action.

It’s not that it wouldn’t work, just that it doesn’t feel very clean.

I ended up using automation. I think I’m just hoping that coda introduces a Changed() function or updates the Modified() function to include when columns are ‘modified’ due to calculations.

1 Like