The iframes not showing is probably caused by the shortcode parser freaking out by how you pass the parameter to it. I tested your code example / shortcode (added 4 times to the post content) and here’s what I got as a result,
<div><iframe class="airtable-embed" ’src<="" iframe=""></div>
<div class = "airtable-view"><iframe class="airtable-embed"’src</iframe>
It might be better idea to format your shortcode callback function along these lines,
function shortcodeToIframe($atts){
$default = array(
'src' => '',
);
$atts = shortcode_atts( $default, $atts );
if ( ! $atts['src'] ) {
return;
}
return sprintf(
'<div class="airtable-view"><iframe class="airtable-embed" src="https://wordpress.stackexchange.com/questions/345916/%s"></iframe></div>',
esc_url( $atts['src'] )
);
}
And then use the shortcode like this,
[airtable-view src="http://www.domain.com"]
This would make the parameter explicit and there would be no extra quotes, double quotes, or equals signs to confuse the shortcode parser.