The stored procedure as written will only grant privileges to stored procedures and not stored functions. To grant to both types change section 3's insert from:
INSERT INTO #StoredProcedures (StoredProcOwner, StoredProcName)
SELECT ROUTINE_SCHEMA, ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME NOT LIKE 'dt_%'
AND ROUTINE_TYPE = 'PROCEDURE'
to:
INSERT INTO #StoredProcedures (StoredProcOwner, StoredProcName)
SELECT ROUTINE_SCHEMA, ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME NOT LIKE 'dt_%'
AND DATA_TYPE <> N'TABLE'
AND ( ROUTINE_TYPE = N'PROCEDURE'
OR ROUTINE_TYPE = N'FUNCTION')