This issue was opened 3 years ago and still hasn't been resolved. On change events do not fire for programmatic changes in the sheet:opened event, which makes it incredibly hard to initialize values properly. This, in itself, is already a workaround that I'm doing because number inputs aren't stored as ints but rather as strings. Here's a simple example, in pug and js: input(name="attr_number_string", type="number") // A string input span(name="attr_number") // Display the numeric version of the attribute script initialsValues = {number_string: "10"} on("change:number_string", () => { // This event handler works normally getAttrs(["number_string"], values => { setAttrs({number: parseInt(value.number_string)}) }) }) on("sheet:opened", () => { setAttrs(initialValues) }) In the above example, on sheet open, the `number_string` value is set, but the event doesn't propagate. In a normal event handler, it would.