I'm trying to import outcomes from a CSV file, which I've attached here. For some reason, only the last two rows are getting imported. I'm receiving a message that rows 2 through 22 are not in visible context. I can't figure out what is different about rows 23 and 24. Any help would be greatly appreciated. Thank you!
Let me start with the standard disclaimer that I have not imported outcomes before, so I'm speaking strictly from the documentation and what I see in the CSV file.
When I open your CSV, the first thing I notice is that outcome 21 does not look complete. The only 2 that are working are after that. Technically, the Outcomes Import Format Documentation says there are defaults for values that are not specified and none of those empty ones are checked as required, but some of the descriptions leave you wondering whether or not they are.
The first thing I would try, not knowing anything about the process, is putting in values for outcome 21. That is also biased by your "what is different?" question.
That said, the error itself makes me think it's something else, so if I was purely reading the standard and not trying to answer your question, I would fix the vendor_guid first. What I'm thinking here more closely aligns with the error message you're getting.
vendor_guid: A value that uniquely identifies this learning outcome or learning outcome group. For learning outcome groups, this value can be referenced by other learning outcomes or learning outcome groups in the parent_guids field below, to indicate that this group contains an outcome or group. This value cannot contain spaces.
If outcomes have been exported from an account with no vendor_guid values set, canvas will auto-assign vendor_guid values from internal identifiers. These ids will have the prefix "canvas_outcome:" and "canvas_outcome_group:" for outcomes and groups respectively. We recommend that you *do not* change these values once they have been assigned. If you want to set your own vendor_guid values for existing outcomes, you should do that using the Canvas API prior to exporting outcomes from an account. In addition, these prefixes are reserved; newly created outcomes and groups may not have vendor_guid fields with these prefixes.
You have vendor_guid values of 1...24. This is what Canvas shows in the example CSV file. However what Canvas shows is often not what reality looks like, they are examples. I think when they say unique -- they mean globally unique, not just within a course. In fact, the GUID means Globally Unique IDentifier. In other words, you should not be using simple integers for your vendor_guids because there is a very strong chance that someone else might try to use them.
It is possible that vendor_guid 1..21 (rows 2..22 in the spreadsheet) already exist somewhere else. Outcome 22 (row 23) is the first one that it doesn't already exist. My thinking is that the visible context would be your course, but since the vendor_guid must be globally unique, some other course has those vendor_guid already taken.
When I look at the source code for Canvas, that notion seems to have credibility. The error you're getting is right after it tries to find a prior existence of the outcome and then throws the error if it's not in the current context (course).
Rather than trying to use simple integers, it may be better to use some unique code or prefix them. For example, start all Math outcome guids with mat or math and then a number.
I hope that helps.
Thank you. Problem resolved.
Middle School Math Teacher
Avenues: The World School
259 Tenth Avenue
New York, NY 10001
ASimpson@avenues.org | www.avenues.org <http://avenues.org>
Avenues World Holdings, LLC
On Thu, Jan 24, 2019 at 10:39 AM firstname.lastname@example.org <email@example.com>