Maybe it would be better to use script for that. IMPORTRAGE
not working inside ARRAYFORMULA
is usually solved with importing using scripts.
In case of formulas with import failure tolerance and source markings here are a few solutions.
Solution 1 - many QUERY
, same number of IMPORTRANGE
Try this:
=QUERY(
ARRAYFORMULA(
{
IFERROR(QUERY(IMPORTRANGE(A2; B2); "SELECT '" & A2 & "', Col1 WHERE Col1 IS NOT NULL"); {""\ ""});
IFERROR(QUERY(IMPORTRANGE(A3; B3); "SELECT '" & A3 & "', Col1 WHERE Col1 IS NOT NULL"); {""\ ""});
IFERROR(QUERY(IMPORTRANGE(A4; B4); "SELECT '" & A4 & "', Col1 WHERE Col1 IS NOT NULL"); {""\ ""})
}
);
"WHERE Col2 IS NOT NULL
LABEL Col1 'Source',
Col2 'Imported Data'"
)

Solution 2 - one QUERY
, twice the IMPORTRANGE
You can use IFERROR
in case import will go wrong.
Here is a possible solution for you (IFERROR
and source URLs) (one formula in E1
):
=QUERY(
ARRAYFORMULA(
{
IFERROR({IF(SEQUENCE(ROWS(IMPORTRANGE(A2; B2))); A2)\ IMPORTRANGE(A2; B2)}; {""\ ""});
IFERROR({IF(SEQUENCE(ROWS(IMPORTRANGE(A3; B3))); A3)\ IMPORTRANGE(A3; B3)}; {""\ ""});
IFERROR({IF(SEQUENCE(ROWS(IMPORTRANGE(A4; B4))); A4)\ IMPORTRANGE(A4; B4)}; {""\ ""})
}
);
"WHERE Col2 IS NOT NULL
LABEL Col1 'Source',
Col2 'Imported Data'"
)
