Cross-doc not syncing canvas images (among other things)

I’ve noticed that cross-doc will discard everything except text in canvas columns. Here is an example with an image, but I’ve noticed that it will also ignore an embedded table.
Screenshot 2023-02-27 at 13.06.11

Screenshot 2023-02-27 at 13.06.20

Even after I manually change the receiving column type to “canvas” the behaviour stays the same, probably because the imported column type is “text”.
Screenshot 2023-02-27 at 13.12.08

In this simple example it doesn’t seem like a big problem, but for me it basically means we should avoid using canvas if we plan to use cross-doc.

Is this a bug, a limitation, or is cross-doc implementation for canvas not finished yet?

3 Likes

I thought I would avoid this issue by using the “Ad row” function from the cross-doc pack but it has the same problem, it only copies text from canvas columns and ignores other contents.

It seems to me that the cross-doc pack was not updated to handle canvas columns completely.

@Shaina_Torgerson can you please check if this is a bug or an incomplete implementation, and when can we expect a possible fix?

I am encountering this as well. Even using the Coda API, I can see the markdown (using ‘rich’ for the valueFormat) for canvas columns does not include embedded screenshots, they are completely filtered out. This is a show stopper for an implementation of ours. Are there any workarounds one can provide?

@orth my workaround was to make an additional column that transforms the canvas column into JSON using
thisRow.[name_of_canvas_column]._Merge() + ""

You still won’t be able to directly embed images, rather you have to embed images using a url. You can publicly host the image somewhere and use that url, or get the public url from a coda image. I made an image table and then get the url like this
ParseJSON(_Merge(thisRow.Image) + " ", "#/publicUrl").First()
(there is a delay until the url becomes available).

Then you need to add the new JSON column to your cross-doc table so it’s visible in the other document.

In the other document you the need to reconstruct the canvas column using
ParseJSON('{"o":' + thisRow.[name_of_json_column] + '}')._Deref_Object("o")
don’t forget to set the column type to canvas.

This is hobbled together from various posts on the coda forums, so you can search around for more info.

Of course keep in mind this is a workaround and might break in the future. Also, it will only transfer styling and (url embedded) images, and not other objects such as tables.

I just ran into this problem and copy pasting doesn’t seem to work either.
I wish to give my team a canvas in every task so they can be creatively unhindered by the system, but at the same time I’d like to have a backup for system updates and such.

It seems like this is only a problem with files uploaded inside the doc.