text: Title: Catch error when using `product` instead of `product[key]`
  Body: (there is a related issue but I couldn't find it)
  
  if a task generates multiple products, a user might inadvertently run something like `df.to_csv(product)` instead of `df.to_csv(product['data'])`, which will throw a cryptic error. In another issue, we discussed running some static analysis to determine if this might happen but now I thought of an easier alternative.
  
  most of the time, users are encountering this issue when writing to files using `open()` or the `pandas.to_{something}` function. we could catch the error and see if it contains a specific substring, then append to the error message to point out the solution